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

时间:2011-09-21 14:23:02

标签: mysql sql database insert normalization

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

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

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

3 个答案:

答案 0 :(得分:35)

  1. 您可以通过SELECT LAST_INSERT_ID();或通过您的框架/ MySQL库(无论使用何种语言)来调用mysql_insert_id()

  2. 那不行。在那里你必须在插入后查询ID。

答案 1 :(得分:2)

为什么不呢:

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

答案 2 :(得分:1)

首先,要获取刚刚插入的ID,您可以创建类似的内容:

SELECT LAST_INSERT_ID() ;

小心,这只会在您上一次INSERT查询后生效,如果您有多次插入,它将仅返回第一个ID

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

如果您不选择此选项,INSERT将被停止,您将获得重复关注的行。