mysql去除重複的數據

有時候數據庫會不可避免的導入重複的數據,我們就需要根據某些條件去確定哪些是重複的數據,然後把它刪除

創建如下表

 

<span style="font-size:18px;">CREATE TABLE `first_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `user_no` varchar(50) DEFAULT NULL,
  `address` varchar(50) DEFAULT NULL,
  `telphone` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;</span>

在這裏面,名字,電話,地址一樣的數據很多條,假設,我們想刪除,名字和地址一樣的員工

 

第一步:查找名字和地址一樣的數據
select * from first_table group by username,address

第二步:把他們的id當作使用標記

select min(id) from first_table GROUP BY username,address;

第三步:刪除id不在查詢範圍的。

delete from first_table where id not in (select min(id) from first_table GROUP BY username,address);

下面的句子看着很正確,但是運行的時候會報下面的錯

[Err] 1093 - You can't specify target table 'first_table' for update in FROM clause;

大意就是,你不能一邊查詢,一邊又刪除,系統不支持你這麼做,

這時候我們只需要一個小小的修改,給我們查詢的數據起個別名

delete from first_table
where id not in (select * from (
select min(id) from first_table GROUP BY username,address
) as p
);

在查詢表中數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章