Mysql - 表1中SELECT的INSERT表2中的表1中的WHERE NOT EXIST

时间:2017-05-01 22:29:03

标签: mysql insert where

Table1有unique_id,ID_actor,ID_media,ID_program。

每个媒体可能包含一个或多个节目,每个节目可能包含一个或多个演员,不能复制。

在另一个表(表2)中它有更多的信息,有时在标题中人们记录了演员的名字..所以我发现这个查询对媒体做出正确的引用

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

这段代码效果很好但是如果已经将actor引用到媒体上的程序,那么它将被复制..所以,因为insert似乎不支持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))

1 个答案:

答案 0 :(得分:1)

奇怪你错过了这个功能,因为你的问题标题几乎都是你需要的确切语法。

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
);