2014-04-02 36 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