更新多列可能重复的记录

时间:2017-11-07 11:43:01

标签: mysql

我有一个包含5列的用户表:

id | first_name | last_name | email | phone_number

在检查重复ID时插入表格:

INSERT INTO user (id, first_name, last_name, email, phone_number)  
VALUES (:id, :first_name, :last_name, :email, :phone_number)  
ON DUPLICATE KEY first_name = :first_name, last_name = :last_name, email = :email, phone_number = :phone_number

但我需要以某种方式检查重复emailphone_number并相应地更新记录。

1 个答案:

答案 0 :(得分:0)

如果我们只是尝试一下会发生什么......

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,firstname VARCHAR(12) NOT NULL
,lastname VARCHAR(12) NOT NULL
,tel VARCHAR(12) NOT NULL
, UNIQUE(firstname,lastname));

INSERT INTO my_table VALUES 
(1,'John','Lennon','555-8182'),
(2,'Paul','McCartney','555-8183'),
(3,'Ringo','Starr','555-8184'),
(4,'George','Harrison','555-8185');

SELECT * FROM my_table;
+----+-----------+-----------+----------+
| id | firstname | lastname  | tel      |
+----+-----------+-----------+----------+
|  1 | John      | Lennon    | 555-8182 |
|  2 | Paul      | McCartney | 555-8183 |
|  3 | Ringo     | Starr     | 555-8184 |
|  4 | George    | Harrison  | 555-8185 |
+----+-----------+-----------+----------+

INSERT INTO my_table VALUES 
(5,'George','Martin','555-8186') 
ON DUPLICATE KEY UPDATE tel = '555-8186';

INSERT INTO my_table VALUES 
(6,'John','Lennon','555-8187') 
ON DUPLICATE KEY UPDATE tel = '555-8187';

SELECT * FROM my_table;

+----+-----------+-----------+----------+
| id | firstname | lastname  | tel      |
+----+-----------+-----------+----------+
|  1 | John      | Lennon    | 555-8187 |
|  2 | Paul      | McCartney | 555-8183 |
|  3 | Ringo     | Starr     | 555-8184 |
|  4 | George    | Harrison  | 555-8185 |
|  5 | George    | Martin    | 555-8186 |
+----+-----------+-----------+----------+