目录
一、准备测试表
(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*
FROMrepeat_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*
FROMrepeat_tab1;
三、重复数据查询
(1)查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据
-- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,不包括同 numid 同 testname 的数据,并根据 numid 升序排列
SELECT*
FROMrepeat_tab1
WHEREnumid 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 BYnumid ASC;
(2)查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据
-- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,包括同 numid 同 testname 的数据,并根据 numid 升序排列
SELECT*
FROMrepeat_tab1
WHEREnumid 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 BYnumid ASC;
(3)查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的)
-- 查询:重复测试表 repeat_tab1,查询 numid 相同,而 testname 不同,留去重后的同 numid 同 testname 的数据(留 id 最大的),并根据 numid 升序排列
SELECT*
FROMrepeat_tab1
WHEREnumid IN ( SELECT numid FROM repeat_tab1 GROUP BY numid HAVING count( numid ) > 1 ) ANDid IN ( SELECT MAX(id) FROM repeat_tab1 GROUP BY testname HAVING count( testname ) >= 1 )
ORDER BYnumid ASC;