程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL刪除重復數據的簡單方法

MYSQL刪除重復數據的簡單方法

編輯:MySQL綜合教程

復制代碼 代碼如下:
CREATETABLE`users`(
`id`int(10)NOTNULLAUTO_INCREMENT,
`name`char(50)NOTNULL,
PRIMARYKEY(`id`)
)

復制代碼 代碼如下:
deletefromuserswhereidin(selectmin(id)fromusersgroupbynamehavingcount(name)>1);

結果報錯:1093youcan'tspecifytargettable....

原因是mysql刪除動作不能帶有本表的查詢動作,意思是你刪除users表的東西不能以users表的信息為條件所以這個語句會報錯,執行不了。只要通過創建臨時表作為查詢條件。如下

復制代碼 代碼如下:
deletefromuserswhereidin(select*from(selectmin(id)fromusersgroupbynamehavingcount(name)>1));

還要注意deletefromusers這裡不能用別名

其他方法。
復制代碼 代碼如下:
deleteusersasafromusersasa,(selectmin(id)id,namefromusersgroupbynamehavingcount(name)>1
)asbwherea.name=b.nameanda.id<>b.id;


建立臨時表:
復制代碼 代碼如下:
createtabletmp_usersselectmin(`id`),`name`fromusersgroupbyname;

truncatetableusers;
insertintousersselect*fromtmp_users;
droptabletmp_users;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved