Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách xóa bản ghi trùng lặp và giữ lại một hàng trong MySQL

Sử dụng bảng tạm (temporary table) với DISTINCT. Các bước:

CREATE TABLE bangTam AS SELECT DISTINCT cot1, cot2 FROM tenBang;
TRUNCATE TABLE tenBang;
INSERT INTO tenBang(cot1, cot2) SELECT cot1, cot2 FROM bangTam;
DROP TABLE bangTam;

Tạo bảng demo39:

mysql> CREATE TABLE demo39 (
    -> user_id INT,
    -> user_name VARCHAR(20)
    -> );

Chèn dữ liệu trùng lặp:

mysql> INSERT INTO demo39 VALUES(10,'John');
mysql> INSERT INTO demo39 VALUES(10,'John');
mysql> INSERT INTO demo39 VALUES(11,'David');
mysql> INSERT INTO demo39 VALUES(11,'David');

Hiển thị dữ liệu:

mysql> SELECT * FROM demo39;

Kết quả:

+---------+-----------+
| user_id | user_name |
+---------+-----------+
| 10      | John      |
| 10      | John      |
| 11      | David     |
| 11      | David     |
+---------+-----------+

Thực hiện xóa trùng lặp:

mysql> CREATE TABLE temporaryTable AS SELECT DISTINCT user_id, user_name FROM demo39;
mysql> TRUNCATE TABLE demo39;
mysql> INSERT INTO demo39(user_id, user_name) SELECT user_id, user_name FROM temporaryTable;
mysql> DROP TABLE temporaryTable;

Kết quả sau khi xóa trùng:

mysql> SELECT * FROM demo39;
+---------+-----------+
| user_id | user_name |
+---------+-----------+
| 10      | John      |
| 11      | David     |
+---------+-----------+