我需要创建一个 SQL 查询,以根据对局部变量的 SELECT 查询结果将一些数据插入表中。我的数据库平台是 MySQL 5.1,但我认为这不会有什么不同。基本上,我想做的是:
SELECT id INTO var_name FROM table1 WHERE some_column='something' LIMIT 1;
INSERT INTO table2 (`number`) VALUES (@var_name);
不过,我无法通过第一个语句,因为我收到错误“未声明的变量 var_name”。我也试过将语句放在 BEGIN/END block 和存储过程中,但后来我遇到其他错误,这些错误仅说明 SELECT 行上有错误。我做错了什么?
最佳答案
您需要声明@var_name
,然后选择进入@var_name
。我不太了解 MySQL,但请尝试这样的操作:
declare @var_name varchar(100);
SELECT id INTO @var_name FROM table1 WHERE some_column='something' LIMIT 1;
INSERT INTO table2 (`number`) VALUES (@var_name);
编辑:也许是更好的方法:
insert into table2 ('number')
select id
from table1
where some_column = 'something' LIMIT 1;
这消除了对变量的需求,并且会更快更容易理解。
关于sql - 使用局部变量的 SELECT INTO 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472936/