【MySQL】mysql:重复数据查询 sql
2021/12/8 19:18:18
本文主要是介绍【MySQL】mysql:重复数据查询 sql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、准备测试表
(1)创建表
(2)查询表
(3)删除表
二、准备测试数据
(1)插入数据
(2)查询数据
三、重复数据查询
(1)查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据
(2)查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据
(3)查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的)
一、准备测试表
(1)创建表
-- 创建表:重复测试表 repeat_tab1,主键 id 自增,numid、testname 必填 CREATE TABLE IF NOT EXISTS `repeat_tab1`( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `numid` VARCHAR(10) NOT NULL COMMENT '编号:可重复', `testname` VARCHAR(20) NOT NULL COMMENT '名称:可重复', PRIMARY KEY ( `id` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='重复测试表';
(2)查询表
-- 查询:重复测试表 repeat_tab1 SELECT * FROM repeat_tab1;
(3)删除表
-- 删除表:重复测试表 repeat_tab1 DROP TABLE repeat_tab1;
二、准备测试数据
(1)插入数据
-- 插入数据:重复测试表 repeat_tab1 INSERT INTO repeat_tab1 ( numid, testname ) VALUES ( 1, '吴一' ), ( 1, '吴一' ), ( 1, '陈二' ), ( 2, '张三' ), ( 2, '李四' ), ( 3, '王五' );
(2)查询数据
-- 查询:重复测试表 repeat_tab1 SELECT * FROM repeat_tab1;
三、重复数据查询
(1)查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据
-- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据,并根据 numid 升序排列 SELECT * FROM repeat_tab1 WHERE numid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 ) AND testname IN ( SELECT testname FROM repeat_tab1 GROUP BY testname HAVING count( testname ) = 1 ) ORDER BY numid ASC;
(2)查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据
-- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据,并根据 numid 升序排列 SELECT * FROM repeat_tab1 WHERE numid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 ) AND testname IN ( SELECT testname FROM repeat_tab1 GROUP BY testname HAVING count( testname ) >= 1 ) ORDER BY numid ASC;
(3)查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的)
-- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的),并根据 numid 升序排列 SELECT * FROM repeat_tab1 WHERE numid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 ) AND id IN ( SELECT MAX(id) FROM repeat_tab1 GROUP BY testname HAVING count( testname ) >= 1 ) ORDER BY numid ASC;
这篇关于【MySQL】mysql:重复数据查询 sql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享