我如何获得多个插入的行在MySQL中的ID?
我用这个命令将一些单词插入到两列表中:
INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
-
我怎样才能得到每个单词插入行的ID(主键)。 我的意思是在执行
INSERT
之后返回“55,56,57”的值。 MySQL有这样的回应吗? -
术语列是
UNIQUE
。 如果一个术语已经存在,MySQL将不会插入它。 是否有可能返回这个重复的参考(即该行所在行的ID)? 像“55,12,56”这样的回应。
-
你通过
SELECT LAST_INSERT_ID();
获得它SELECT LAST_INSERT_ID();
或通过你的框架/ MySQL库(以任何语言)调用mysql_insert_id()
。 -
这是行不通的。 你必须在插入后查询ID。
为什么不只是:
SELECT ID FROM terms WHERE term IN ('word1', 'word2', 'word3')
首先,为了得到刚刚插入的id,你可以这样做:
SELECT LAST_INSERT_ID() ;
小心,这只会在您最后一次INSERT
查询后才起作用,并且只有当您有多次插入时才会返回第一个ID !
然后,用IGNORE
选项,我不认为有可能得到没有插入的行。 当你做INSERT IGNORE
,你只要告诉MySQL忽略必须创build重复条目的行。
如果你没有使用这个选项, INSERT
将会被停止,并且你将得到与重复相关的行。