1、方式一:使用group by +having分组查出重复数据,然后将该结果作为条件再查询出所有完整的重复记录。
SELECT * FROM table1
WHERE (NO, sort) IN (
SELECT NO,sort FROM table1
GROUP BY NO,sort
HAVING count(1) > 1
)
ORDER BY NO ASC,sort ASC
2、方式二:较为麻烦,使用临时表+左连接,通过group by +having查出的结果插入临时表,再采用该临时表左连接table1查出所有的完整重复记录。
(1)创建临时表temp_repeat,先将重复记录的两个分组字段查询出来,并插入临时表,作为下一步查询的条件;
INSERT INTO temp_repeat (NO,sort)
SELECT NO,sort FROM table1
GROUP BY NO,sort
HAVING count(1) > 1
(2)先查询临时表记录,再左连接table1取得完整记录,记住左连接顺序不能搞反了!
SELECT * FROM temp_repeat a
LEFT JOIN table1 b ON a.No = b.No
AND a.sort = b.sort
ORDER BY b.No ASC,b.sort ASC