Mysql - 在 TABLE 1 从 SELECT 在 TABLE 2 上插入,在 Table 1 上不存在
Mysql - INSERT on TABLE 1 from SELECT on TABLE 2 with WHERE NOT EXIST on Table 1
表 1 有 unique_id、ID_actor、ID_media、ID_program。
每个媒体可包含1个或多个节目,每个节目可包含1个或多个演员且不可重复。
在另一个 table(表 2)中,它有更多信息,有时人们会在标题中记录演员的名字。所以我发现这个查询可以正确引用媒体
INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program)
(SELECT 123, ID_Media, ID_Program FROM TABLE2 WHERE Title LIKE '%ActorsName%')
此代码运行良好,但如果演员已被媒体上的节目引用,它将被复制..因此,由于插入似乎不支持 WHERE 不知道如何首先检查演员是否已经在 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
);
表 1 有 unique_id、ID_actor、ID_media、ID_program。
每个媒体可包含1个或多个节目,每个节目可包含1个或多个演员且不可重复。
在另一个 table(表 2)中,它有更多信息,有时人们会在标题中记录演员的名字。所以我发现这个查询可以正确引用媒体
INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program)
(SELECT 123, ID_Media, ID_Program FROM TABLE2 WHERE Title LIKE '%ActorsName%')
此代码运行良好,但如果演员已被媒体上的节目引用,它将被复制..因此,由于插入似乎不支持 WHERE 不知道如何首先检查演员是否已经在 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
);