在SQL Server中,创建不包含部分重复项的联合查询的最佳方法是什么

时间:2012-06-08 16:53:04

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我有两个具有相同架构的表。我想创建所有字段的联合,但我想根据某些字段的相等性而不是所有字段来排除重复项。在SQL Server(2008r2)中实现此目的的最佳方法是什么?

I see this sort of answer,但还有更好的选择吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用RANK()函数来完成它,但是@Tim说它只会丢弃分区中未使用的所有字段的任何差异。下面,如果您有六行共有B和C,则无论A和D列中的值如何,其中只有一行会存在:

SELECT *
FROM (
    SELECT A, B, C, D,
        RANK() OVER(PARTITION BY B, C ORDER BY B, C) AS MYRANK    
    FROM (
        SELECT A, B, C, D
        FROM TABLE_A
        UNION
        SELECT A, B, C, D
        FROM TABLE_B
    ) T1
WHERE T1.MYRANK = 1