不确定为什么这不起作用,尝试将列(从表中)和数据(不是从任何表)从一个表插入到另一个表中而不是已经存在。
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(表格)应该看起来像这样 -
Event_tags
event_id tag_id
3 1
4 2
1 1
2 2
这是我的错误 - 错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在“SELECT events.id,3 FROM events WHERE events.info ='HybridAnalysis'附近使用正确的语法。”不在第2行
*编辑如下
#####有一个我没有意识到的标签表可能会让它变得更容易tags
id name
3 HybridAndlysis
4 ThreatExpert
答案 0 :(得分:1)
你能试试吗?
self.scrollView.contentOffset = CGPointZero;
self.scrollView.contentInset = UIEdgeInsetsZero;
基于事件表
中的信息列的第二个答案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
);
答案 1 :(得分:1)
因此,您可以使用它接受ThreatExpert或HybridAnalysis,如果不存在,它将在Event_tags
表中输入:
INSERT INTO event_tags ( event_id, tag_id )
SELECT
events.id,
(case when E.Info = 'HybridAnalysis' then 1 when E.Info = 'ThreatExpert' then 2 else 0 end)
FROM events AS E
WHERE
NOT EXISTS
(SELECT
1
FROM event_tags AS ET
WHERE E.id=ET.event_id
);
如果有一个新的info
应该有另一个tag_id,CASE语句会在表中插入0。
您的案例陈述可以更新以处理新的info
条目。理想情况下,tag_id
可以存储在events
表或链接表中的某个位置。