当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《SQLServer中的UNION如何将一行与另一行进行比较?》经验,为你挑选了1个好方法。

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

例如,考虑我使用带有2个选择查询的联合.每个select都连接5或6个表,结果集中有10列.

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

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

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

任何人都可以解释,如何UNION确定哪些行是'重复'?

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



1> James..:

根据Pinal Dave的说法,他有一个长期运行的博客,上面有很多关于T-SQL的很好的信息,

UNION语句有效地对结果集执行SELECT DISTINCT.如果您知道返回的所有记录都是您的联合中唯一的,请改用UNION ALL,它会提供更快的结果.

SELECT DISTINCT将比较的瓦莱斯所有列,因此,如果任何价值的任何列不同的是,该行仍将保持,但如果所有的价值都是一样的,它会从结果中移除.有各种规则可用于比较类型略有不同的列值,并且您不能使用其中一部分列中的列类型UNION无法转换为其他部分中相应列的类型的列.这个UNION.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有