MySQL刪除重複資料
drop table if exists test ;
create table test(
id int primary key auto_increment,
name varchar(10)
);
insert into test(name) values('1');
insert into test(name) values('2');
insert into test(name) values('3');
insert into test(name) values('4');
insert into test(name) values('5');
insert into test(name) values('6');
insert into test(name) values('7');
insert into test(name) values('8');
insert into test(name) values('9');
insert into test(name) values('9');
insert into test(name) values('9');
commit;
在重複的三個資料中要保留一個,刪除另外兩個.
這個在Oracle裡面簡直不是事兒.
但是MySQL實現這個功能還是挺費勁.
方法一 採用臨時表過渡
create table test1 as select * from test group by name;
rename table test to tmp,test1 to test,tmp to test1;
方法二 內聯檢視刪除
delete t1 from test t1
inner join
(select name,min(id) minid from test group by name having count(*)>1) t2
on (t1.name=t2.name and t1.id!=t2.minid);
先找到有重複name的id(這部分的資料最終保留),然後自關聯找到name相同而id不同的資料,這些就是需要刪除的資料.
參考:
http://www.cnblogs.com/sunss/archive/2011/01/29/1947469.html
create table test(
id int primary key auto_increment,
name varchar(10)
);
insert into test(name) values('1');
insert into test(name) values('2');
insert into test(name) values('3');
insert into test(name) values('4');
insert into test(name) values('5');
insert into test(name) values('6');
insert into test(name) values('7');
insert into test(name) values('8');
insert into test(name) values('9');
insert into test(name) values('9');
insert into test(name) values('9');
commit;
在重複的三個資料中要保留一個,刪除另外兩個.
這個在Oracle裡面簡直不是事兒.
但是MySQL實現這個功能還是挺費勁.
方法一 採用臨時表過渡
create table test1 as select * from test group by name;
rename table test to tmp,test1 to test,tmp to test1;
方法二 內聯檢視刪除
delete t1 from test t1
inner join
(select name,min(id) minid from test group by name having count(*)>1) t2
on (t1.name=t2.name and t1.id!=t2.minid);
先找到有重複name的id(這部分的資料最終保留),然後自關聯找到name相同而id不同的資料,這些就是需要刪除的資料.
參考:
http://www.cnblogs.com/sunss/archive/2011/01/29/1947469.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1346342/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 刪除重複資料
- mysql 刪除表中重複的資料MySql
- mongodb刪除重複資料MongoDB
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- mysql 刪除重複項MySql
- mysql 查詢及 刪除表中重複資料MySql
- 刪除表裡重複資料
- sqlserver中刪除重複資料SQLServer
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- PostgreSQL刪除表中重複資料SQL
- 解析postgresql 刪除重複資料案例SQL
- Oracle查詢重複資料與刪除重複記錄Oracle
- MS SQL Server 刪除重複行資料SQLServer
- T-SQL 刪除重複資料SQLSQL
- 海量資料處理_刪除重複行
- 根據rowid刪除重複資料
- 通過ROWID刪除重複資料
- Oracle中刪除重複資料的SqlOracleSQL
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- mysql表刪除重複記錄方法MySql
- ORACLE批量刪除無主鍵重複資料Oracle
- Python 字串,list排序,刪除重複資料Python字串排序
- Mongodb 刪除重複資料的幾個方法MongoDB
- oracle重複資料的查詢及刪除Oracle
- oracle 刪除重複資料的幾種方法Oracle
- Oracle 刪除重複資料只留一條Oracle
- 刪除重複資料的幾個方法(轉)
- Oracle中刪除表中的重複資料Oracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- SQL刪除重複資料,只保留一行SQL
- oracle 查詢及刪除表中重複資料Oracle
- NetApp FAS Filer的重複資料刪除APP
- T-SQL技術收集——刪除重複資料SQL
- 刪除重複資料的一種高效的方法
- 重複資料刪除和SSD的互補方法
- update,delete與INNER JOIN 以及刪除重複資料delete