如何才能获得具有重复列组合的记录?例如,在下表中,我想获得具有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 |
+----+----------+-------------------------+
答案 0 :(得分:1)
内部选择获取具有重复项的记录的parentID
和date
,外部选择获取包含id
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;
通常,使用分析函数的上述方法可能会胜过传统的连接/聚合方法。但是,这假设您的数据库支持上述查询。