gpt4 book ai didi

sql - 为什么使用不同的方法确定 SQL 中的重复记录会得到不同的结果?

转载 作者:行者123 更新时间:2023-12-04 21:30:54 25 4
gpt4 key购买 nike

我在 MS SQL Server 2014 中运行以下查询,并且我使用 CTE 技术获得了更多重复项,而不是第一个。

(可能是不必要的背景:这是一个大表,包含患者相关数据,查看手术后 30 天内入院情况。因此重复行的标准包括入院标识符“admitPK”和手术标识符“程序PK")

第一种方法:

SELECT [admitPK]
FROM db.table
GROUP BY [admitPK], [procedurePK]
HAVING COUNT(*) >1

CTE 方法:

WITH dupes as (
SELECT *
,ROW_NUMBER() OVER(
PARTITION BY [admitPK], [procedurePK]
ORDER BY ([admitPK])) as RN
FROM db.table)
SELECT *
FROM dupes
WHERE RN > 1

CTE 方法返回的重复行比第一个多 1.8%。进一步分析,CTE方法是正确的。我确信这是我所缺少的简单东西。只是想了解为什么不同我 future 的选择。感谢您的帮助。

最佳答案

这在评论部分得到了回答,现在看来很明显。最好由 Lasse Karlsen 解释。如果有 2 个、3 个或更多重复项,则 GROUP BY 查询为每个组生成一行。因此,即使那些具有多个重复项的行在该查询中仍然只产生一行。WHERE RN > 1 查询列出了所有重复的行(当然除了分区中的第一个列表)。所以对我来说,CTE 方法似乎是删除重复行最准确的方法。

关于sql - 为什么使用不同的方法确定 SQL 中的重复记录会得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com