mysql 刪除表中的重複記錄,只保留其中一條
今天蠢了一下午 不如花5分鐘搜索。。
查詢重複記錄 select * from table GROUP BY name
只把有重複的顯示出來
select * ,count(*) as nums from tab_a group by name having nums>1
方法一:(這個方法比較不錯,只是自增字段會重建)
新建一個臨時表
create table tmp as select * from youtable group by name
刪除原來的表
drop table youtable
重命名錶
alter table tmp rename youtable
法二:(未試過)
CREATE TEMPORARY TABLE
bad_temp2(id VARCHAR(10), name VARCHAR(20))
TYPE=HEAP;
INSERT INTO bad_temp2(name) SELECT DISTINCT name FROM bad_table2;
DELETE FROM bad_table2;
INSERT INTO bad_table2(id,name) SELECT id,name FROM bad_temp2;
以上方法採用建立臨時表的辦法刪除了 bad_table2 中 name 字段有重複的記錄。
查詢重複記錄 select * from table GROUP BY name
只把有重複的顯示出來
select * ,count(*) as nums from tab_a group by name having nums>1
方法一:(這個方法比較不錯,只是自增字段會重建)
新建一個臨時表
create table tmp as select * from youtable group by name
刪除原來的表
drop table youtable
重命名錶
alter table tmp rename youtable
法二:(未試過)
CREATE TEMPORARY TABLE
bad_temp2(id VARCHAR(10), name VARCHAR(20))
TYPE=HEAP;
INSERT INTO bad_temp2(name) SELECT DISTINCT name FROM bad_table2;
DELETE FROM bad_table2;
INSERT INTO bad_table2(id,name) SELECT id,name FROM bad_temp2;
以上方法採用建立臨時表的辦法刪除了 bad_table2 中 name 字段有重複的記錄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.