如何获取SQL中具有重复列组合的记录?

时间:2018-06-04 07:06:18

标签: sql

如何才能获得具有重复列组合的记录?例如,在下表中,我想获得具有ParentID和Date的重复组合的记录。

+----+----------+-------------------------+
| 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 |
+----+----------+-------------------------+ 

2 个答案:

答案 0 :(得分:1)

内部选择获取具有重复项的记录的parentIDdate,外部选择获取包含id

的cpmplete数据
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;

答案 1 :(得分:1)

这个问题的MySQL回答是由@juergen给出的,但是这里有一个支持分析函数的数据库的选项:

SELECT ID, ParentID, Date
FROM
(
    SELECT ID, ParentID, Date, COUNT(*) OVER (PARTITION BY ParentID, Date) cnt
    FROM yourTable
) t
WHERE t.cnt > 1;

通常,使用分析函数的上述方法可能会胜过传统的连接/聚合方法。但是,这假设您的数据库支持上述查询。