Abu*_*usi 21 mysql sql sql-insert
我需要在表中插入唯一值,并且需要记录的id,需要在关系表中插入那些id,如果不存在则需要查询插入记录返回inset id,如果存在则返回记录主键(id ).
我想为多个值做这个,比如橙色,芒果,香蕉,就像批量插入一样.
模式:
------------
id | tag |
------------
1 | orange|
------------
Run Code Online (Sandbox Code Playgroud)
我把这个记录为一个记录
INSERT INTO `tags` (`tag`)
SELECT 'myvalue1'
FROM tags
WHERE NOT EXISTS (SELECT 1 FROM `tags` WHERE `tag`='myvalue1')
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
发布问题以找出一些优化的解决方案,我不想在代码中使用额外的循环来匹配db的值.
Mar*_*ams 13
文档页面上有一个示例INSERT ... ON DUPLICATE KEY UPDATE:
您的查询将如下所示:
INSERT INTO `tags` (`tag`) VALUES ('myvalue1')
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), `tag`='myvalue1';
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)