MySQL SELECT INTO变量

时间:2019-11-20 08:52:32  来源:igfitidea点击:

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

MySQL SELECT INTO变量语法

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

SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition;

使用以下语法:

  • c1,c2和c3是要选择并存储到变量中的列或表达式。

  • @ v1,@ v2和@ v3是存储c1,c2和c3中的值的变量。

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

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

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

MySQL SELECT INTO变量示例

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

MySQL SELECT INTO单变量示例

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

SELECT 
    city
INTO
    @city
FROM 
    customers
WHERE 
    customerNumber = 103;

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

SELECT 
    @city;

MySQL SELECT INTO多变量示例

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

SELECT 
    city,
    country 
INTO
    @city,
    @country
FROM 
    customers
WHERE 
    customerNumber = 103;

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

SELECT 
    @city, 
    @country;

MySQL SELECT INTO变量–多行示例

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

SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103;

这是输出:

Error Code: 1172. Result consisted of more than one row

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

SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103
LIMIT 1;

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