How can I get records that have a duplicate combination of columns in SQL?
本问题已经有最佳答案,请猛点这里访问。
如何才能获得具有重复列组合的记录? 例如,在下表中,我想获得具有ParentID和Date重复组合的记录。
1 2 3 4 5 6 7 | +----+----------+-------------------------+ | ID | ParentID | DATE | +----+----------+-------------------------+ | 1 | 225 | 2018-05-10 00:00:00.000 | | 2 | 225 | 2018-05-10 00:00:00.000 | | 3 | 300 | 2019-25-11 00:00:00.000 | +----+----------+-------------------------+ |
这个问题的MySQL回答是由@juergen给出的,但这里是支持分析函数的任何数据库的选项:
1 2 3 4 5 6 7 | SELECT ID, ParentID, DATE FROM ( SELECT ID, ParentID, DATE, COUNT(*) OVER (PARTITION BY ParentID, DATE) cnt FROM yourTable ) t WHERE t.cnt > 1; |
通常,使用分析函数的上述方法可能优于传统的连接/聚合方法。 但是,这假设您的数据库支持上述查询。
内部选择获取具有重复项的记录的
1 2 3 4 5 6 7 8 9 10 | SELECT t1.* FROM your_table t1 INNER JOIN ( SELECT parentId, DATE FROM your_table GROUP BY parentId, DATE HAVING COUNT(*) > 1 ) t2 ON t1.parentId = t2.parentId AND t1.date = t2.date; |