匹配另一个表中的值

时间:2014-08-26 20:52:19

标签: sql sql-server-2008-r2

我想从表中收集数据

表1是用户挑选的风味。

表1

|  T1C1 |   T1C2  | 
-------------------
|    A |  Vanilla |

表2是一段口味。

表2

|  T2C1 |   T2C2  |  
-------------------
|  1   |Strawberry|
|  2   |Chocolate |
|  3   | Mint     |
|  4   |Strawberry|
|  5   |Chocolate |
|  6   |  Vanilla |
|  7   |Chocolate |
|  8   | Mint     |
|  9   |Chocolate |

我想在选择了所选风味后获得以下结果,然后为其指定了“ 1 ”,否则标记为“ 0 ”。< / p>

结果

|  T2C1 |   T2C2  | SELECTED|
----------------------------|
|  1   |Strawberry|    0    |
|  2   |Chocolate |    0    |
|  3   | Mint     |    0    |
|  4   |Strawberry|    0    |
|  5   |Chocolate |    0    |
|  6   |  Vanilla |    1    |
|  7   |Chocolate |    0    |
|  8   | Mint     |    0    |
|  9   |Chocolate |    0    |

2 个答案:

答案 0 :(得分:2)

您可以使用LEFT JOIN完成此操作,并在右侧表格中检查空值(不匹配):

SELECT 
    T2C1, 
    T2C2, 
    CASE WHEN T1.T1C2 IS NULL THEN 0 ELSE 1 END SELECTED
FROM Table1 T1
LEFT JOIN Table2 T2 
    ON T2.T2C2 = T1.T1C2

答案 1 :(得分:0)

我找到了结果。

如果有其他人感兴趣的话,那就是:

SELECT T2C1, T2C2,
CASE WHEN T2C2 = (SELECT T1C2 FROM T1 WHERE (T1C1 = 'A') THEN '1' ELSE '0' END AS SELECTED
FROM T2