0

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

我看到了这种答案,但是有更好的选择吗?

谢谢你的帮助。

4

1 回答 1

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
于 2012-06-08T18:07:37.517 回答