繁体   English   中英

没有重复查询的SQL

[英]query without duplicates SQL

我有重复的查询。 现在,我需要构建没有重复的查询。 我正在尝试这样做,但是我的查询需要很长时间。 我的重复查询:

SELECT
    c.*
FROM
    Clients c 
    INNER JOIN
    (
        SELECT
            iin,
            COUNT(iin) AS countIIN
        FROM
            Clients
        GROUP BY
            iin
        HAVING
            COUNT(iin) > 1
    ) cc
    ON c.IIN = cc.IIN
ORDER BY
    c.last_name DESC

我需要上面的反查询。

您可以使用以下查询仅查找唯一记录。

WITH CTE AS 
(SELECT *, COUNT(IIN) OVER (PARTITION BY IIN) RECORDCOUNT FROM CLIENTS)
SELECT * FROM CTE WHERE RECORDCOUNT =1

确保在查询中将*替换为必填列。

另外,如果您也想从重复列表中获取唯一记录,则可以选择以下查询

WITH CTE AS 
    (SELECT *, RECORD_NUMBER() OVER (PARTITION BY IIN ORDER BY IIN) RECORDCOUNT FROM CLIENTS)
    SELECT * FROM CTE WHERE RECORDCOUNT =1

在SQL Row_Number()函数中查找重复项是最佳选择,

请检查以下查询

WITH [CTE NoDuplicates] AS
(
SELECT
  RN = ROW_NUMBER() OVER (PARTITION BY iin ORDER BY c.last_name DESC),
  *
FROM Clients
)
DELETE FROM [CTE DUPLICATE] WHERE RN = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM