我有一个像这样的大型插入查询:
INSERT INTO video_tags
(vid_id, tag_id)
VALUES
(1,7),
(2,46),
(2,52) Etc. Etc.
但是我没有要插入的 tag_id,只有标签字符串。因此,我需要在插入标签时查找标签 ID。标签存储在包含两列的查找表中:
+-----+---------+
| id | int |
| tag | varchar |
+-----+---------+
我想做这样的事情:
INSERT INTO video_tags
(vid_id, tag_id)
VALUES
(1, SELECT id FROM tags WHERE tag = 'banana'),
(2, SELECT id FROM tags WHERE tag = 'tree')
(2, SELECT id FROM tags WHERE tag = 'chimps')
...但这行不通,而且看起来既麻烦又低效。
我也看到过这样做:
INSERT INTO video_tags
(vid_id, tag_id)
VALUES
SELECT '1', id FROM tags WHERE tag = 'banana')
...但我无法让它与多个选择一起使用。
最佳答案
您的查询可能是这样的:
CREATE TABLE rawdata
(`vid_id` int, `tag_name` varchar(10))
;
INSERT INTO rawdata
(`vid_id`, `tag_name`)
VALUES
(1, 'banana'),
(2, 'tree'),
(2, 'chimps')
;
INSERT INTO video_tags
SELECT rawdata.vid_id, tag.id FROM
rawdata
LEFT JOIN tag ON tag.tag = rawdata.tag_name
;
DROP TABLE rawdata
关于mysql - 从相关表中插入具有给定值和值的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289331/