sql - 使用局部变量的 SELECT INTO 问题

标签 sql mysql mysql5

我需要创建一个 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/

相关文章:

sql - CURRENT_TIMESTAMP 与数据库无关的 SQL

安卓 : take Data in ListView

php - 从同一表中的多个列中选择日期

mysql - 在一个巨大的表中处理删除/插入/选择

sql - 只选择必须满足两个条件的记录

php - SQL 替换不工作

mysql - 根据服务器的不同,按查询结果分组的方式也不同

mysql - 在mysql查询中获取额外的变量

php - 在 jQuery 中使用 AJAX 访问信息并将数据从 PHP 传递到 JSON

mysql - IN() 函数中使用的用户定义 session 变量返回意外结果