不知道为什么这不起作用,尝试将一个表中的列(来自表)和数据(不是来自任何表)插入到另一个表中(如果它尚不存在)。
INSERT INTO event_tags ( event_id, tag_id )
VALUES (SELECT events.id, 2 FROM events WHERE events.info = 'HybridAnalysis')
WHERE NOT EXISTS (SELECT events.id=event_tags.event_id AND event_tags.tag_id=2);
表格
Events
id Info
1 ThreatExpert
2 HybridAnalysis
3 ThreatExpert
4 HybridAnalysis
Event_tags
event_ID tag_id
3 1
4 2
(eventsID不是主要的)
Event_tags(table) 最终应该看起来像这样 -
Event_tags
event_id tag_id
3 1
4 2
1 1
2 2
这是我的错误 - ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 2 行的 'SELECT events.id, 3 FROM events WHERE events.info = 'HybridAnalysis') WHERE NOT' 附近使用的正确语法
*编辑如下
##### 有一个标签表,我没有意识到这可能会让事情变得更容易tags
id name
3 HybridAndlysis
4 ThreatExpert
最佳答案
你能试试这个吗?
INSERT INTO event_tags ( event_id, tag_id )
SELECT events.id, 2
FROM events AS E
WHERE E.info = 'HybridAnalysis'
AND NOT EXISTS
(SELECT
1
FROM event_tags AS ET
WHERE E.id=ET.event_id AND ET.tag_id=2
);
基于事件表中的信息列的第二个答案
INSERT INTO event_tags ( event_id, tag_id )
SELECT events.id, 2
FROM events AS E
WHERE E.info = 'HybridAnalysis'
AND NOT EXISTS
(SELECT
1
FROM event_tags AS ET
INNER JOIN events AS E1
E1.event_id=ET.event_id
WHERE E1.info = 'HybridAnalysis'
);
关于Mysql根据EXISTS从一张表中插入列和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37495703/