当前位置:   article > 正文

【MySQL】mysql:重复数据查询 sql_mysql查询重复数据

mysql查询重复数据

目录

一、准备测试表

(1)创建表

(2)查询表

(3)删除表

二、准备测试数据

(1)插入数据

(2)查询数据

三、重复数据查询

(1)查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据

(2)查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据

(3)查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的)



一、准备测试表

(1)创建表

  1. -- 创建表:重复测试表 repeat_tab1,主键 id 自增,numid、testname 必填
  2. CREATE TABLE IF NOT EXISTS `repeat_tab1`(
  3. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  4. `numid` VARCHAR(10) NOT NULL COMMENT '编号:可重复',
  5. `testname` VARCHAR(20) NOT NULL COMMENT '名称:可重复',
  6. PRIMARY KEY ( `id` )
  7. )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='重复测试表';

 


(2)查询表

  1. -- 查询:重复测试表 repeat_tab1
  2. SELECT
  3. *
  4. FROM
  5. repeat_tab1;

 


(3)删除表

  1. -- 删除表:重复测试表 repeat_tab1
  2. DROP TABLE repeat_tab1;

 



二、准备测试数据

(1)插入数据

  1. -- 插入数据:重复测试表 repeat_tab1
  2. INSERT INTO repeat_tab1 ( numid, testname )
  3. VALUES
  4. ( 1, '吴一' ),
  5. ( 1, '吴一' ),
  6. ( 1, '陈二' ),
  7. ( 2, '张三' ),
  8. ( 2, '李四' ),
  9. ( 3, '王五' );

 


(2)查询数据

  1. -- 查询:重复测试表 repeat_tab1
  2. SELECT
  3. *
  4. FROM
  5. repeat_tab1;

 



三、重复数据查询

(1)查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据

  

  1. -- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据,并根据 numid 升序排列
  2. SELECT
  3. *
  4. FROM
  5. repeat_tab1
  6. WHERE
  7. numid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 )
  8. AND
  9. testname IN ( SELECT testname FROM repeat_tab1 GROUP BY testname HAVING count( testname ) = 1 )
  10. ORDER BY
  11. numid ASC;


(2)查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据

  1. -- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据,并根据 numid 升序排列
  2. SELECT
  3. *
  4. FROM
  5. repeat_tab1
  6. WHERE
  7. numid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 )
  8. AND
  9. testname IN ( SELECT testname FROM repeat_tab1 GROUP BY testname HAVING count( testname ) >= 1 )
  10. ORDER BY
  11. numid ASC;


(3)查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的)

  1. -- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的),并根据 numid 升序排列
  2. SELECT
  3. *
  4. FROM
  5. repeat_tab1
  6. WHERE
  7. numid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 )
  8. AND
  9. id IN ( SELECT MAX(id) FROM repeat_tab1 GROUP BY testname HAVING count( testname ) >= 1 )
  10. ORDER BY
  11. numid ASC;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/230757?site
推荐阅读
相关标签
  

闽ICP备14008679号