前一陣做了個會員系統,又寫了個程序把以往的會員數據導入到SQL數據庫中.因為某些原因導了好幾遍,造成了某些重復的記錄存在.前兩天使用人員才發現問題,于是想辦法解決.
搜啊搜,搜到了使用SQL句子刪除重復記錄的方法.又一次體會到了SQL的強大(其實是我的SQL水平太菜了而已).寫下來,加強記憶.
會員數據需要用到的是下面三個字段:ID(自增),MemberName,MemberAddress.只要會員姓名與會員地址相同就認為是重復記錄,重復記錄在刪除時只保留ID最大的那個.SQL如下:
delete MemberInfo where ID not in (
select max(ID) from MemberInfo group by MemberName, MemberAddress)
not in的效率可能會低些,但因為是直接操作數據庫,所以這并不重要.這個句子還是非常的簡單有效的.
在真正的刪除操作前,通常會先了解一下重復記錄的情況.可以使用下面的句子:
SELECT COUNT(MemberName) AS TheCount, MemberName, MemberAddress
FROM MemberInfo
GROUP BY MemberName, MemberAddress
HAVING (COUNT(*) > 1)
因為工作中用的SQL太簡單,以至于group by及having的用法都不了解,真是慚愧.
P.S. 所有的內容都來自于網絡,沒有什么獨創的東西.發出來只是為了加強一下自己的記憶.
搜啊搜,搜到了使用SQL句子刪除重復記錄的方法.又一次體會到了SQL的強大(其實是我的SQL水平太菜了而已).寫下來,加強記憶.
會員數據需要用到的是下面三個字段:ID(自增),MemberName,MemberAddress.只要會員姓名與會員地址相同就認為是重復記錄,重復記錄在刪除時只保留ID最大的那個.SQL如下:


在真正的刪除操作前,通常會先了解一下重復記錄的情況.可以使用下面的句子:




P.S. 所有的內容都來自于網絡,沒有什么獨創的東西.發出來只是為了加強一下自己的記憶.