表1具有unique_id,ID_actor,ID_media,ID_program。

每个媒体可以包含1个或多个程序,每个程序可以包含1个或多个actor,并且不能重复。

在另一个表(Table2)中,它具有更多信息,有时在标题中人们记录演员的姓名..因此,我发现此查询可以对媒体做出正确的引用

INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program)
    (SELECT 123, ID_Media, ID_Program FROM TABLE2 WHERE Title LIKE '%ActorsName%')


这段代码很好用,但是如果已经在媒体上引用了actor,那么它将被复制..因此,由于insert似乎不支持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 - MySQL-从表2上的SELECT到表1上的INSERT插入,而表1上不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43727427/

10-10 22:03