左连接右表有Count = 1

时间:2013-03-14 21:26:34

标签: sql sql-server-2008 duplicate-removal

表1:

ID     Values
1      1
2      2
3      3
4      4

表2:

ID    Values
1     1
1     2
1     2
2     4
4     5
4     6

我需要一个结果:

ID    Table 1 Values    Table 2 Values
1     1                 1
2     2                 4
3     3                         *This is blank because Table 2 doesn't have ID 3
4     4                 5
4     4                 6

注意排除表2中的行重复值(ID 1和值2)。然而ID 4的2行是因为ID 2的表2中的两个值都不具有重复性。

所以这是一个左连接,我只想要表2中的值,其中该值不重复且ID与表1中的ID匹配。

1 个答案:

答案 0 :(得分:2)

在表2上使用CTE,然后将其用作左连接的右侧:

WITH t2 AS (
    SELECT ID, Values FROM [Table 2]
    GROUP BY ID, Values
    HAVING COUNT(*) = 1
)
SELECT t1.ID, t1.Values [Table 1 Values], t2.Values [Table 2 Values]
    FROM [Table 1] t1
    LEFT JOIN t2 ON t1.ID = t2.ID