MySQL中如何获取多个插入行的ID?

发布于 2024-12-05 15:03:19 字数 352 浏览 0 评论 0 原文

我使用以下命令将一些单词插入到两列表中:

INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
  1. 如何获取插入每个单词的行的 ID(主键)。我的意思是在执行 INSERT 后返回一个类似“55,56,57”的值。 MySQL有这样的响应吗?

  2. 术语列是UNIQUE。如果一个术语已经存在,MySQL 将不会插入它。是否可以返回此重复项的引用(即该术语所在行的 ID)?类似“55,12,56”的响应。

I am inserting some words into a two-column table with this command:

INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
  1. How can I get the ID (Primary Key) of the row in which each word is inserted. I mean returning a value like "55,56,57" after executing INSERT. Does MySQL have such a response?

  2. The term column is UNIQUE. If a term already exists, MySQL will not insert it. Is it possible to return the reference for this duplication (i.e. the ID of the row in which the term exists)? A response like "55,12,56".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

廻憶裏菂餘溫 2024-12-12 15:03:19
  1. 您可以通过 SELECT LAST_INSERT_ID(); 获取它 或通过让您的框架/MySQL 库(无论何种语言)调用 mysql_insert_id()

  2. 那是行不通的。在那里,您必须在插入后查询 ID。

  1. You get it via SELECT LAST_INSERT_ID(); or via having your framework/MySQL library (in whatever language) call mysql_insert_id().

  2. That won't work. There you have to query the IDs after inserting.

热风软妹 2024-12-12 15:03:19

为什么不只是:

SELECT ID
  FROM terms
 WHERE term IN ('word1', 'word2', 'word3')

Why not just:

SELECT ID
  FROM terms
 WHERE term IN ('word1', 'word2', 'word3')
許願樹丅啲祈禱 2024-12-12 15:03:19

首先,要获取刚刚插入的 id,您可以执行以下操作:

SELECT LAST_INSERT_ID() ;

小心,这仅在您最后一个 INSERT 查询之后才起作用,并且如果您执行以下操作,它将返回仅第一个 ID有多个插入!

然后,使用 IGNORE 选项,我认为不可能获得未插入的行。当您执行 INSERT IGNORE 时,您只需告诉 MySQL 忽略必须创建重复条目的行。

如果您不设置此选项,INSERT 将停止,并且您将获得与重复相关的行。

First, to get the id just inserted, you can make something like :

SELECT LAST_INSERT_ID() ;

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 an INSERT 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文