表1具有unique_id、ID_actor、ID_media、ID_program。
每个媒体可以包含 1 个或多个节目,每个节目可以包含 1 个或多个 Actor ,并且不能重复。
在另一个表(表2)中,它有更多信息,有时在标题中人们会记录 Actor 的名字..所以我发现这个查询可以对媒体进行正确的引用
INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program)
(SELECT 123, ID_Media, ID_Program FROM TABLE2 WHERE Title LIKE '%ActorsName%')
这段代码运行良好,但如果 Actor 已经引用到媒体上的程序,它将被复制..所以,因为插入似乎不支持 WHERE 不知道如何首先检查 Actor 是否已经在 table1 上、在该媒体上以及在来自 SELECT 查询的该程序上。
如果不存在则插入
(SELECT ID_Actor,ID_Media,ID_Program from Table1
WHERE ID_Actor = 123
AND ID_Media = (ID_media from SELECT QUERY)
AND ID_Program = (ID_Program From Select Query))
最佳答案
奇怪的是,您错过了该功能,因为您的问题标题几乎具有您需要的语法。
INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program)
SELECT DISTINCT 123, t2.ID_Media, t2.ID_Program
FROM TABLE2 AS t2
WHERE t2.Title LIKE '%ActorsName%'
AND NOT EXISTS (
SELECT 1
FROM Table1 AS t1
WHERE t1.ID_Actor = 123
AND t1.ID_Media = t2.ID_Media
AND t1.ID_Program = t2.ID_Program
);
关于Mysql - 从表 2 上的 SELECT 中插入表 1,表 1 上的 WHERE NOT EXIST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727427/