2017-05-01 41 views
0

表1具有unique_id,ID_actor,ID_media,ID_program。Mysql - 在表1上從表1上的SELECT上插入表1中的WHERE NOT EXIST中的INSERT

每個媒體可能包含一個或多個節目,每個節目可能包含一個或多個演員,並且不能被複制。

在另一個表(表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)) 
+0

查找__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

奇怪的是,「AND NOT EXISTS」對t​​able1查詢顯示存在一個條目,但INSERT查詢不斷添加一個新行,如AND NOT EXISTS不起作用 – Musikdoktor

+0

嘗試添加'DISTINCT',正如我在編輯時所做的那樣;我提供的原始查詢不會阻止最初插入多行,稍後會更多。 – Uueerdo

相關問題