将查询结果设置为MySQL中的变量

Nat*_*and 27 mysql variables

这应该是一个简单的语法:我试图在MySQL中设置一个等于查询结果的变量:

SET @variable1 = SELECT salary FROM employee_info WHERE emp_id = 12345678;
Run Code Online (Sandbox Code Playgroud)

基本上我希望将该员工的薪水存储为变量,然后我可以操作和添加.

这是正确的语法是什么,因为我无法让它工作.

Dam*_*ith 61

SELECT salary INTO @variable1 FROM employee_info WHERE emp_id = 12345678 LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

要么

SET @variable1 = (SELECT salary FROM employee_info WHERE emp_id = 12345678 LIMIT 1);

SELECT @variable1;
Run Code Online (Sandbox Code Playgroud)

  • 解决方案不完全可互换:如果查询结果为空集,SELECT INTO variable1将不会更改variable1,而SET变量1 =等将在此情况下将NULL赋值给variable1.我认为应该指出这种差异,因为它在很多用例中都很有意义. (7认同)

小智 12

您甚至可以在一个查询中填充多个变量.

SELECT salary, salary_group INTO @var1, @var2 FROM employee_info WHERE emp_id = 12345678;
Run Code Online (Sandbox Code Playgroud)