如何在MySQL表中插入多行并返回新的ID?
P粉373990857
P粉373990857 2024-04-06 10:03:44
[MySQL讨论组]

通常我可以在 MySQL 表中插入一行并获取 last_insert_id 。但现在,我想将许多行批量插入到表中并获取 ID 数组。有谁知道我该怎么做?

有一些类似的问题,但并不完全相同。我不想将新 ID 插入任何临时表;我只想取回 ID 数组。

我可以从批量插入中检索lastInsertId吗?

带有last_insert_id()的Mysql多行插入选择语句

P粉373990857
P粉373990857

全部回复(2)
P粉561438407

我认为可以做到的唯一方法是为插入的每组行存储唯一标识符(guid) 然后选择行 ID。 例如:

INSERT INTO t1
(SELECT col1,col2,col3,'3aee88e2-a981-1027-a396-84f02afe7c70' FROM a_very_large_table);
COMMIT;

SELECT id FROM t1 
WHERE guid='3aee88e2-a981-1027-a396-84f02afe7c70';

您还可以使用 uuid() 在数据库中生成 guid

P粉775723722

旧线程,但只是研究了这个,所以这里是:如果您在最新版本的 MySQL 上使用 InnoDB,您可以使用 LAST_INSERT_ID()ROW_COUNT() 获取 ID 列表。

InnoDB 保证在进行批量插入时自动递增的顺序号,前提是 innodb_autoinc_lock_mode 设置为 0(传统)或 1(连续)。 因此,您可以从 LAST_INSERT_ID() 获取第一个 ID,并通过添加 ROW_COUNT()-1 获取最后 ID。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号