2016-12-08 38 views
0

我有一個映射表,用於電影和actor。我的查詢插入數據如下所示:"INSERT IGNORE INTO movie_actor_mapping (actor_id, movie_id) VALUES (%s, %s)"。在這裏,我必須忽略重複的行,例如我必須忽略這樣的數據:如果此數據存在,則爲1 | 21 | 1。但不知道如何修改我的查詢或表格,因爲這裏的兩列必須是唯一的。MySQL - 當兩個唯一列重複輸入時,忽略插入到映射

CREATE TABLE `movie_actor_mapping` (
    `movie_actor_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `movie_id` int(10) unsigned DEFAULT NULL, 
    `actor_id` int(10) unsigned DEFAULT NULL, 
    PRIMARY KEY (`movie_actor_id`), 
) 

本表數據是這樣的:1 | 21 | 1

+0

1)爲什麼你有一個movie_actor_id而不是其他2個主鍵? 2)如果值(movie_id,actor_id)已經在表中,是否要跳過插入? – DZDomi

+0

嗨! 1)很難說,因爲我是數據庫的新手,我不確定我是否正確。 2)是的,我必須跳過插入 – rel1x

回答

1

如果你有一個M:M關係,你通常有兩個從實體鑰匙放在交叉表:所以在你比如你的表應該像:

現在,如果你插入與現有條目的新條目,你會得到一個SQL錯誤的說法,就是說你不能爲您的主鍵重複條目,作爲主鍵在默認情況下也是唯一

+0

非常感謝! – rel1x