MySQL SELECT INTO Variable

摘要:在本教程中,您将学习如何使用 MySQL SELECT INTO variable将查询结果存储在变量中。

MySQL SELECT INTO Variable语法

要将查询结果存储在一个或多个变量中,可以使用SELECT INTO variable语法:

SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition;
Code language: SQL (Structured Query Language) (sql)

在这个语法中:

  • c1、c2 和 c3 是您要选择并存储到变量中的列或表达式。
  • @v1、@v2 和 @v3 是存储 c1、c2 和 c3 中的值的变量。

变量的数量必须与选择列表中的列数或表达式的数量相同。此外,查询必须返回零行或一行。

如果查询没有返回任何行,MySQL 会发出没有数据的警告,并且变量的值保持不变。

如果查询返回多行,MySQL 会发出错误。为了确保查询始终返回最多一行,您可以使用LIMIT 1子句将结果集限制为一行。

MySQL SELECT INTO Variable示例

我们将使用示例数据库中的customers表进行演示。

products table

MySQL SELECT INTO 单变量示例

以下语句获取号码为 103 的客户的城市并将其存储在 @city 变量中:

SELECT 
    city
INTO
    @city
FROM 
    customers
WHERE 
    customerNumber = 103;
Code language: SQL (Structured Query Language) (sql)

以下语句显示@city变量的内容:

SELECT 
    @city;
Code language: SQL (Structured Query Language) (sql)

MySQL SELECT INTO 多个变量示例

要将选择列表中的值存储到多个变量中,可以用逗号分隔变量。例如,以下语句查找客户编号 103 的城市和国家,并将数据存储在两个相应的变量@city 和@country 中:

SELECT 
    city,
    country 
INTO
    @city,
    @country
FROM 
    customers
WHERE 
    customerNumber = 103;
Code language: SQL (Structured Query Language) (sql)

以下语句显示了 @city 和 @country 变量的内容:

SELECT 
    @city, 
    @country;
Code language: SQL (Structured Query Language) (sql)
MySQL Select Into multiple variables example

MySQL SELECT INTO 变量 – 多行示例

以下语句会导致错误,因为查询返回多行:

SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103;
Code language: SQL (Structured Query Language) (sql)

这是输出:

Error Code: 1172. Result consisted of more than one row
Code language: SQL (Structured Query Language) (sql)

要修复此问题,请使用LIMIT 1子句,如下所示:

SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103
LIMIT 1; 
Code language: SQL (Structured Query Language) (sql)

在本教程中,您学习了如何使用 MySQL SELECT INTO variable语法将结果查询结果存储在一个或多个变量中。

本教程有帮助吗?