隨筆-8  評論-20  文章-4  trackbacks-0
          轉(zhuǎn)帖(http://www.cnblogs.com/cime63/archive/2008/06/19/1225134.html
          前一陣做了個會員系統(tǒng),又寫了個程序把以往的會員數(shù)據(jù)導(dǎo)入到SQL數(shù)據(jù)庫中.因為某些原因?qū)Я撕脦妆?造成了某些重復(fù)的記錄存在.前兩天使用人員才發(fā)現(xiàn)問題,于是想辦法解決.
              搜啊搜,搜到了使用SQL句子刪除重復(fù)記錄的方法.又一次體會到了SQL的強大(其實是我的SQL水平太菜了而已).寫下來,加強記憶.
              會員數(shù)據(jù)需要用到的是下面三個字段:ID(自增),MemberName,MemberAddress.只要會員姓名與會員地址相同就認為是重復(fù)記錄,重復(fù)記錄在刪除時只保留ID最大的那個.SQL如下:
              
          delete MemberInfo where ID not in (
            
          select max(ID) from MemberInfo group by MemberName, MemberAddress)
              not in的效率可能會低些,但因為是直接操作數(shù)據(jù)庫,所以這并不重要.這個句子還是非常的簡單有效的.
              
              在真正的刪除操作前,通常會先了解一下重復(fù)記錄的情況.可以使用下面的句子:
              
          SELECT COUNT(MemberName) AS TheCount, MemberName, MemberAddress
          FROM
           MemberInfo
          GROUP BY
           MemberName, MemberAddress
          HAVING (COUNT(*> 1)
              因為工作中用的SQL太簡單,以至于group by及having的用法都不了解,真是慚愧.
              P.S. 所有的內(nèi)容都來自于網(wǎng)絡(luò),沒有什么獨創(chuàng)的東西.發(fā)出來只是為了加強一下自己的記憶.
          posted on 2008-11-17 11:08 ju 閱讀(827) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
          主站蜘蛛池模板: 巴东县| 霸州市| 南投市| 博白县| 清涧县| 星子县| 房产| 体育| 贡嘎县| 顺义区| 长武县| 长岭县| 安阳县| 灵台县| 西安市| 桃江县| 平顶山市| 青冈县| 泰兴市| 涡阳县| 胶州市| 色达县| 犍为县| 九江县| 巴马| 康马县| 郎溪县| 米泉市| 正宁县| 临武县| 农安县| 天柱县| 建宁县| 淳化县| 偏关县| 云安县| 安宁市| 甘谷县| 东城区| 天长市| 灵川县|