SQL不允许表中的重复记录

时间:2014-04-02 12:31:49

标签: mysql sql

如何让它不添加重复项? 我想通过ID旁边的所有其他列进行检查。

我希望这是无效的。

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   

3 个答案:

答案 0 :(得分:6)

您需要在所有三列上使用复合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

答案 1 :(得分:1)

  1. 在所有其他列上添加UNIQUE键是一种可能的解决方案。
  2. 另一种解决方案是依赖于软件。

答案 2 :(得分:0)

尝试使用:

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

或使用

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

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

告诉我它是如何运作的!