我有一个包含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
但我需要以某种方式检查重复email
或phone_number
并相应地更新记录。
答案 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 |
+----+-----------+-----------+----------+