隨筆-8  評論-20  文章-4  trackbacks-0
          轉帖(http://www.cnblogs.com/cime63/archive/2008/06/19/1225134.html
          前一陣做了個會員系統,又寫了個程序把以往的會員數據導入到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. 所有的內容都來自于網絡,沒有什么獨創的東西.發出來只是為了加強一下自己的記憶.
          posted on 2008-11-17 11:08 ju 閱讀(833) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 全州县| 贵溪市| 蒲江县| 甘肃省| 苍山县| 鹤峰县| 吉木萨尔县| 瑞安市| 中卫市| 交口县| 盐山县| 大渡口区| 旬邑县| 曲阳县| 巢湖市| 贡嘎县| 方山县| 安庆市| 墨脱县| 绵竹市| 鹤庆县| 花垣县| 汝州市| 洞口县| 德庆县| 任丘市| 清镇市| 宝清县| 兴仁县| 垦利县| 韶山市| 苗栗县| 兴国县| 凌云县| 蓝山县| 临高县| 曲麻莱县| 海林市| 遂平县| 右玉县| 小金县|