繁体   English   中英

Mysql 插入 ... select,获取最后插入 ID

[英]Mysql Insert … select, obtain last insert ID

我在 php 中有这个查询。 这是从 table2 复制的插入 select,但我需要获取新创建的行的 ID 并将它们存储到数组中。 这是我的代码:

$sql = "INSERT INTO table1 SELECT distinct * from table2";  
$db->query($sql);

我可以从 table2 上的 select 开始恢复流程并进行所有单次插入,但它会减慢大表上的脚本。 想法?

您可以锁定表,插入行,并获取最后插入的项目的ID,然后解锁; 这样您就知道 ID 将是连续的,因为没有其他并发用户可以更改它们。 不过,锁定和解锁是您要谨慎使用的东西。

另一种方法是使用表中的一个列 - 一个“更新的”日期时间列或一个插入 ID 列(为此,您输入的值在所有行中都相同。)
这样,您可以执行后续的 SELECT 从数据库中返回匹配更新时间或您选择的插入 ID 的 ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM