隨筆-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 閱讀(829) 評論(0)  編輯  收藏 所屬分類: 數據庫
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(3)

          隨筆分類(7)

          隨筆檔案(8)

          文章分類(4)

          文章檔案(5)

          相冊

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 30249
          • 排名 - 1384

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙南县| 兴海县| 石泉县| 泸溪县| 将乐县| 武冈市| 斗六市| 巴林左旗| 贺州市| 丹凤县| 台北县| 合阳县| 泸西县| 甘南县| 张家港市| 天长市| 凌源市| 涞水县| 伊宁县| 金川县| 洛阳市| 七台河市| 磴口县| 定结县| 新干县| 昂仁县| 扎兰屯市| 得荣县| 伊通| 齐河县| 无极县| 姜堰市| 汉寿县| 西宁市| 四平市| 宁南县| 安康市| 科技| 宣武区| 商都县| 盘锦市|