gpt4 book ai didi

sql - SQL Server 中的 UNION 如何将一行与另一行进行比较?

转载 作者:行者123 更新时间:2023-12-03 04:57:35 24 4
gpt4 key购买 nike

这个问题是关于 SQL UNION 运算符内部查找重复行的方式,而不是编写我们自己的查询来比较 2 行。

例如,考虑一下,我将 union 与 2 个选择查询一起使用。每个选择都会连接 5 或 6 个表,并在结果集中包含 10 列。

问题是:UNION 如何找到重复的行?它是否比较 select1 的column1 与 select2 的column1 && select1 的column2 与 select2 的column2 ......?

当我在每个选择中有 10 列时 - 结果包含 7000 行(例如)。

当我在 select 语句中有 9 或 11 列时(但联接/查询逻辑没有变化) - 结果包含不同的行数,而不是 7000。

谁能解释一下,UNION 如何确定哪些行是“重复项”?

注意:我使用的是 SQL Server 2008。

最佳答案

根据Pinal Dave ,他有一个长期运行的博客,其中包含大量有关 T-SQL 的重要信息,

A UNION statement effectively does a SELECT DISTINCT on the results set. If you know that all the records returned are unique from your union, use UNION ALL instead, it gives faster results.

SELECT DISTINCT 将比较所有列的值,因此如果任何列中的任何值不同,该行将保留,但如果所有值都相同,它将从结果中删除。有多种规则可用于比较类型略有不同的列值,并且您不能使用 UNION 某一部分中的列类型无法转换为以下类型的列: UNION 的其他部分中的相应列。

关于sql - SQL Server 中的 UNION 如何将一行与另一行进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34079897/

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