2017-05-01 13 views
0

表1には、unique_id、ID_actor、ID_media、ID_programがあります。Mysql - 表1のWHERE NOT EXISTの表2のSELECTからのINSERT

各メディアには1つ以上のプログラムが含まれている可能性があります。各プログラムには1つ以上のアクタが含まれており、複製できません。別のテーブル(表2)では

それは時々タイトルに人々は俳優の名前を記録し、より多くの情報を持っている...ので、私はこのクエリはメディア

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

に右基準にこのコードを作成することが判明すでにうまく動作していますが、もしすでに俳優がメディア上のプログラムに参照されていたら、それは複製されますので、insertがサポートしていないように見えます。メディアとSELECTクエリから来るそのプログラム上にある。

INSERT IFは、あなたの質問のタイトルは、あなたが必要とするほとんどの正確な構文を持っているので、あなたは、機能を逃した

(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)) 
+0

Lookup __INSERT ... ON DUPLICATE KEY UPDATE__。重複できない列にユニークなキーがある場合、これはあなたのためのトリックを行う必要があります。 –

答えて

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

ありがとうございます。しかし何らかの理由で、exsistsがあっても新しい行が追加されています。 – Musikdoktor

+0

奇妙なことに、エントリが存在するtable1クエリ表示のAND NOT EXISTS SELECTが、AND NOT EXISTSのような新しい行を追加し続けるINSERTクエリは機能しません。 – Musikdoktor

+0

私の編集で行ったように、 'DISTINCT'を追加してみてください。私が提供した元のクエリは、最初に挿入された複数の行を防ぐことはできません。 – Uueerdo

関連する問題