這篇文章主要講解了“MySQL中刪除重復(fù)記錄的方法”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql中刪除重復(fù)記錄的方法”吧!
創(chuàng)新互聯(lián)自2013年起,先為崇陽等服務(wù)建站,崇陽等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為崇陽企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
用臨時過渡表,這種很笨拙的方法。
如果數(shù)據(jù)庫的設(shè)計不規(guī)范,某個表沒有主健,那么肯定會有重復(fù)記錄的現(xiàn)象,或者存在這種危險。在oracle中,可以通過rowid來刪除重復(fù)記錄。但在mysql中如何實現(xiàn)呢?
google一下,有個方法如下:
1、準備基表test,待測試。
create table test (c1 smallint,c2 smallint);
insert into test values(1,1);
insert into test values(1,1);
insert into test values(1,2);
insert into test values(2,2);
insert into test values(2,2);
2、創(chuàng)建一個臨時表,結(jié)構(gòu)與原表一致,但沒有數(shù)據(jù)。
create table tmp as select * from test where 1=2;
3、將原表數(shù)據(jù)插入臨時表,重復(fù)記錄合為一條記錄。
insert into tmp select distinct * from test;
4、查看一下基表和臨時表的數(shù)據(jù)。
mysql> select * from test;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 1 |
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 2 | 2 |
+------+------+
5 rows in set (0.00 sec)
mysql> select * from tmp;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
+------+------+
3 rows in set (0.00 sec)
5、刪除基表數(shù)據(jù)
mysql> delete from test;
Query OK, 5 rows affected (0.02 sec)
6、將臨時表數(shù)據(jù)插回基表
mysql> insert into test select * from tmp;
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
7、查看一下基表的數(shù)據(jù)
mysql> select * from test;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
+------+------+
3 rows in set (0.00 sec)
8、數(shù)據(jù)準確,完成基表重復(fù)記錄的刪除。
感謝各位的閱讀,以上就是“mysql中刪除重復(fù)記錄的方法”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對mysql中刪除重復(fù)記錄的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!