MySQL中如何获取多个插入行的ID?
我使用以下命令将一些单词插入到两列表中:
INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
-
如何获取插入每个单词的行的 ID(主键)。我的意思是在执行 INSERT 后返回一个类似“55,56,57”的值。 MySQL有这样的响应吗?
-
术语列是
UNIQUE
。如果一个术语已经存在,MySQL 将不会插入它。是否可以返回此重复项的引用(即该术语所在行的 ID)?类似“55,12,56”的响应。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过
SELECT LAST_INSERT_ID(); 获取它
或通过让您的框架/MySQL 库(无论何种语言)调用mysql_insert_id()
。那是行不通的。在那里,您必须在插入后查询 ID。
You get it via
SELECT LAST_INSERT_ID();
or via having your framework/MySQL library (in whatever language) callmysql_insert_id()
.That won't work. There you have to query the IDs after inserting.
为什么不只是:
Why not just:
首先,要获取刚刚插入的 id,您可以执行以下操作:
小心,这仅在您最后一个
INSERT
查询之后才起作用,并且如果您执行以下操作,它将返回仅第一个 ID有多个插入!然后,使用
IGNORE
选项,我认为不可能获得未插入的行。当您执行 INSERT IGNORE 时,您只需告诉 MySQL 忽略必须创建重复条目的行。如果您不设置此选项,
INSERT
将停止,并且您将获得与重复相关的行。First, to get the id just inserted, you can make something like :
Care, this will work only after your last
INSERT
query and it will return the first ID only if you have a multiple insert!Then, with the
IGNORE
option, I don't think that it is possible to get the lines that were not inserted. When you make anINSERT IGNORE
, you just tell MySQL to ignore the lines that would have to create a duplicate entry.If you don't put this option, the
INSERT
will be stopped and you will have the line concerned by the duplication.