1

我需要创建一个 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 块和存储过程中,但后来我遇到了其他错误,这些错误仅表明 SELECT 行上有错误。我究竟做错了什么?

4

3 回答 3

3

您需要声明@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;

这消除了对变量的需求,并且会更快更容易理解。

于 2009-01-23T13:51:56.503 回答
2

尝试

INSERT INTO table2 (`number`)
SELECT id FROM table1 WHERE some_column='something' LIMIT 1
于 2009-01-23T13:53:55.050 回答
-2
CREATE TABLE table_name
AS  
SELECT ...(your select)
于 2012-12-10T18:36:28.960 回答