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

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

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

  2. 术语列是UNIQUE 。 如果一个术语已经存在,MySQL将不会插入它。 是否有可能返回这个重复的参考(即该行所在行的ID)? 像“55,12,56”这样的回应。

  1. 你通过SELECT LAST_INSERT_ID();获得它SELECT LAST_INSERT_ID(); 或通过你的框架/ MySQL库(以任何语言)调用mysql_insert_id()

  2. 这是行不通的。 你必须在插入后查询ID。

为什么不只是:

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

首先,为了得到刚刚插入的id,你可以这样做:

 SELECT LAST_INSERT_ID() ; 

小心,这只会在您最后一次INSERT查询后才起作用,并且只有当您有多次插入时才会返回第一个ID

然后,用IGNORE选项,我不认为有可能得到没有插入的行。 当你做INSERT IGNORE ,你只要告诉MySQL忽略必须创build重复条目的行。

如果你没有使用这个选项, INSERT将会被停止,并且你将得到与重复相关的行。