admin

SQL仅返回重复的行

sql

我有一个查询,返回以下行:

StateId,OrderId,OrderTime,PermitId

我只需要返回全盘完全重复的行,因此每条记录必须与另一条记录完全相同,这样它才可以重复。我想退回两个记录。这些记录与一堆没有重复的记录混在一起…

任何的想法?


阅读 134

收藏
2021-05-10

共1个答案

admin

首先,确定重复项。其次,重新加入以提取这些行。

非聚集(或非窗口/排名)自连接形成部分交叉连接,并为任何一组键给出重复的平方。也包括非重复项。毕竟1 x 1 = 1。

SELECT
    t2.*
FROM
    (
    SELECT 
       StateId, OrderId, OrderTime, PermitId
    FROM
       myTable
    GROUP BY
       StateId, OrderId, OrderTime, PermitId
    HAVING
       COUNT(*) >= 2
    ) T1
    JOIN
    mytable T2 ON T1.StateId = T2.StateId AND T1.OrderId = T2.OrderId AND
                   T1.OrderTime = T2.OrderTime AND T1.PermitId = T2.PermitId
2021-05-10