【发布时间】:2017-07-17 23:21:25
【问题描述】:
我需要一个 MySQL 函数,在以下 SQL 指令之后获取最后插入的 id(s) 列表(不仅仅是最后一个):
insert into my_table (c1, c2, ...)
select c1, c2, ...
from my_table
where id IN (1,2,3)
更清楚地说,我想有这个表(my_table):
id | c1 | c2
-------------
1 | a | b
2 | a | c
3 | b | c
4 | .. | ..
.. | .. | ..
在 INSERT INTO 语句之后复制新值,表格现在如下所示:
id | c1 | c2
-------------
1 | a | b
2 | a | c
3 | b | c
4 | .. | ..
.. | .. | ..
.. | .. | ..
33 | a | b
34 | a | c
35 | b | c
此函数应返回以下列表:33,34,35
我认为的临时解决方案是获取最后插入的 id,然后根据复制的行数“手动”创建 33、34、35 列表。
但我不知道是否存在执行此操作的 SQL 原生函数!
【问题讨论】:
-
为什么每次插入后不获取最后一个 id 并将这些 id 放在一个列表中?您可以使用
SELECT LAST_INSERT_ID();作为最后插入的 id。 -
谢谢...这可能是一个替代解决方案!
-
实际上@LuudvanKeulen 建议你的方法是正确的。