2014-04-02 63 views
0

如何讓它不添加重複項? 我想通過ID旁邊的所有其他列來檢查它。SQL不允許表中的重複記錄

我想這是無效的。

ID col1 col2 col3 

1 first middle last 


ID col1  col2 col3 

2 first middle last 

我希望這是有效的。

ID col1 col2 col3 

1 first middle last 


ID col1  col2 col3 

2 first last middle 
+2

你嘗試過什麼?要創建唯一的組合鍵,例如 –

+0

,您不應該顯示重複記錄,或者您不想重複重複記錄? –

+0

你的行不重複....你有兩個不同的ID ....現在,如果你想檢查col col ... – Hackerman

回答

1
  1. 添加量超過所有其他列UNIQUE鍵是一個可能的解決方案。
  2. 另一種解決方案將取決於軟件。
+0

該列可能包含重複的值。但我不希望列按此順序包含重複值:「第一個」,「中間」,「最後」。所以「第一個」「最後」「中間」應該是有效的,因爲沒有記錄。 – J0ker

+0

@ J0ker - 我相信我的解決方案正在解決這個問題。 – blue

+0

獲取此錯誤#1062 - 關鍵'url_id_4'的重複條目'1'我100%確定沒有行的順序相同。 – J0ker

0

嘗試喲使用:

INSERT IGNORE INTO tablename 
Set col1="",col2="",col3="" 

或使用

REPLACE INTO tablename 
    Set col1="",col2="",col3="" 

或 可以使用 INSERT ... ON DUPLICATE KEY UPDATE語法

告訴我它是如何工作的!

3

您需要在所有三列上使用組合UNIQUE INDEX。請參見本示例表定義:

CREATE TABLE example (
    ID INT PRIMARY KEY AUTO_INCREMENT, 
    col1 VARCHAR(32) NOT NULL, 
    col2 VARCHAR(32) NOT NULL, 
    col3 VARCHAR(32) NOT NULL, 
    UNIQUE(col1, col2, col3) 
); 

-- expected to be valid 
INSERT INTO example (ID, col1, col2, col3) VALUES 
    (NULL, 'first', 'middle', 'last'), 
    (NULL, 'first', 'last', 'middle'); 

-- expected to be invalid 
INSERT INTO example (ID, col1, col2, col3) VALUES 
    (NULL, 'first', 'middle', 'last'), 
    (NULL, 'first', 'middle', 'last'); 

DEMO @SQL Fiddle