我使用此命令将一些单词插入到两列表中:
INSERT IGNORE INTO terms (term) VALUES ('word1'), ('word2'), ('word3');
如何获取插入每个单词的行的ID(主键)。我的意思是在执行INSERT
后返回类似“55,56,57”的值。 MySQL有这样的回应吗?
术语列为UNIQUE
。如果一个术语已经存在,MySQL将不会插入它。是否可以返回此复制的引用(即该术语存在的行的ID)?响应如“55, 12 ,56”。
答案 0 :(得分:35)
您可以通过SELECT LAST_INSERT_ID();
或通过您的框架/ MySQL库(无论使用何种语言)来调用mysql_insert_id()
。
那不行。在那里你必须在插入后查询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
将被停止,您将获得重复关注的行。