如何刪除 MySQL 中除一條記錄之外的重複記錄?


你可以使用帶有某些條件的 DELETE 命令,因為我們需要保留一條記錄並刪除其餘的重複記錄。

讓我們首先建立一個表 −

mysql> create table DemoTable
(
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentName varchar(40)
);
Query OK, 0 rows affected (0.48 sec)

使用 insert 命令插入記錄到表中 −

mysql> insert into DemoTable(StudentName) values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentName) values('Sam');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('David');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.26 sec)

使用 select 命令從表中顯示記錄 −

mysql> select *from DemoTable;

這將產生以下輸出 −

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | John        |
| 2         | Carol       |
| 3         | Sam         |
| 4         | Carol       |
| 5         | David       |
| 6         | Carol       |
+-----------+-------------+
6 rows in set (0.00 sec)

以下是移除除了單條記錄外的重複記錄的查詢 −

mysql> delete tbl1 from DemoTable tbl1,DemoTable tbl2
WHERE
tbl1.StudentName = tbl2.StudentName AND tbl1.StudentId > tbl2.StudentId;
Query OK, 2 rows affected (0.79 sec)

上面的查詢刪除了“Carol”的 2 行,並留下了一條“Carol”記錄。 

現在,我們來顯示錶記錄 −

mysql> select *from DemoTable;

這將產生以下輸出 −

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | John        |
| 2         | Carol       |
| 3         | Sam         |
| 5         | David       |
+-----------+-------------+
4 rows in set (0.00 sec)

更新日期: 30-Jul-2019

1K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告