<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在工作中,我們經常會發現表中會存在重復數據,那么如何找出和刪除這些數據呢?

      下面,以一個小例子來說明:

      1、創建學生表

      1 CREATE TABLE student(
      2     id INT PRIMARY KEY,
      3     stuno VARCHAR(12) NOT NULL,
      4     stuname VARCHAR(30) NOT null
      5 );

      2、向學生表中插入數據

      1 INSERT INTO student VALUES ('1','131111099','小李');
      2 INSERT INTO student VALUES ('2','131111100','小陳');
      3 INSERT INTO student VALUES ('3','131111101','小王');
      4 INSERT INTO student VALUES ('4','131111102','小黑');
      5 INSERT INTO student VALUES ('5','131111099','小曹');
      6 INSERT INTO student VALUES ('6','131111099','小李');

      3、查找僅學號重復的記錄

       從插入記錄上看,id為1、5、6的記錄學號都是相同的,那么驗證一下查詢的數據是否正確

      1 -- 學號重復
      2 -- 先按學號進行分組,然后查詢學數量 > 1的記錄的學號
      3 SELECT * FROM student WHERE stuno IN (
      4     -- 查找重復的學號
      5     SELECT stuno FROM student GROUP BY stuno HAVING COUNT(stuno) > 1
      6 );

      查詢結果如下:

      查詢結果和我們事先分析的數據一致,所以查詢結果是正確的。

      4、查找學號和姓名均重復的記錄

      從插入記錄上看,只有id為1、6的記錄學號和姓名是完全重復的,那么驗證一下查詢的數據是否正確

      1 -- 學號和姓名均重復
      2 SELECT * FROM student WHERE (stuno,stuname) -- 注意:此處一定要加括號,當成聯合字段來處理
      3  IN (
      4     -- 查找學號和姓名均重復的學生信息
      5     SELECT stuno,stuname FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
      6 );

      查詢結果如下:

      查詢結果和我們事先分析的數據一致,所以查詢結果是正確的。

      5、刪除多余的重復記錄(多個字段),只保留最小id的記錄

      重復記錄可能有多條,但是我們只希望保留id最小的那條記錄,因為學號和姓名均重復的只有id為1、6的記錄,保留id為1的記錄,那么驗證一下查詢的數據是否正確

       1 -- 刪除多余的重復記錄(多個字段),只保留最小id的記錄
       2 DELETE FROM student WHERE id IN (
       3     SELECT * FROM (
       4         SELECT id FROM student WHERE (stuno,stuname) -- 注意:此處一定要加括號,當成聯合字段來處理
       5         IN (
       6             -- 查找學號和姓名均重復的學生信息
       7             SELECT stuno,stuname FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
       8         ) AND id NOT IN (
       9             -- 查詢最小id的記錄
      10             SELECT MIN(id) FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
      11         )
      12     ) AS stu_repeat_copy
      13     
      14 );

      查詢結果如下:

      可以看出,id為6的記錄已經被刪除了,所以結果正確

      警告:不能根據本表的查詢結果來更新本表的數據

      在其它的帖子中有看到如下寫法來刪除重復數據:

      1 DELETE FROM student WHERE (stuno,stuname) -- 注意:此處一定要加括號,當成聯合字段來處理
      2     IN (
      3         -- 查找學號和姓名均重復的學生信息
      4         SELECT stuno,stuname FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
      5     ) AND id NOT IN (
      6         -- 查詢最小id的記錄
      7         SELECT MIN(id) FROM student GROUP BY stuno,stuname HAVING COUNT(1) > 1
      8 );

      會報如下錯誤:

        [Err] 1093 - You can't specify target table 'student' for update in FROM clause

      posted on 2018-05-23 14:52  飛天蝸牛  閱讀(29015)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 呻吟国产av久久一区二区| 98精品全国免费观看视频| 中国亚州女人69内射少妇| 国产欧美日韩亚洲一区二区三区| 艳妇乳肉豪妇荡乳xxx| 夜夜躁日日躁狠狠久久av| 久久夜色精品久久噜噜亚| 亚洲成av人片天堂网无码 | 国产精品麻豆va在线播放| 亚洲AV成人片不卡无码| 免费一本色道久久一区| 亚洲av成人网在线观看| 日韩高清亚洲日韩精品一区二区| 色欲久久久天天天综合网 | 亚洲午夜精品久久久久久抢| 五月天天天综合精品无码| 亚洲性猛交xxxx| 国产无遮挡免费视频免费| 人妻精品动漫H无码中字| 武山县| 激情人妻自拍中文夜夜嗨 | 成熟少妇XXXXX高清视频| 国产AV影片麻豆精品传媒| 国产亚洲精品久久77777| 亚洲国产成人av国产自| 国产精品中文字幕免费| 四虎在线永久免费看精品| 欧美成人精品手机在线| 日韩在线视频一区二区三区| 在线免费观看毛片av| 欧美激情一区二区| 亚洲中文字幕日韩精品| 亚洲中文字幕av无码区| 国产精品制服丝袜白丝| 人妻中文字幕亚洲一区| 乐昌市| 97精品尹人久久大香线蕉| 亚洲精品97久久中文字幕无码| 午夜高清福利在线观看| 亚洲人黑人一区二区三区| 最新午夜男女福利片视频|