从表中选择行,其中设置了另一列中的所有列

时间:2016-05-17 14:22:15

标签: sql database db2

我一直试图解决这个问题很长一段时间,似乎无法得到它。我有两个表,只有当表2中的所有列都符合条件时才需要从表1中选择DISTINCT。这是表格的外观:

Table 1
ACR     OCD
sea     123
sea     456
sfo     678
sfo     890

Table 2
OCD       SWITCH
123        Y
456        N
678        Y
890        Y

我正在尝试编写一个select语句,只有当表1中属于该ACR的所有OCD的所有开关都设置为Y时才返回Table1.ACR。因此,使用此数据示例它将返回sfo,因为OCD 678和890都在表2中设置为Y.

我试过了:

SELECT t1.acr
FROM table1 t1
WHERE t1.ocd NOT IN (SELECT DISTINCT t1.ocd
                     FROM table1 t1
                       JOIN table2 t2 ON t1.ocd=t2.ocd
                     WHERE t2.swtich = 'Y');

返回:

sea
sfo
sfo

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT t1.acr
FROM table1 t1
     LEFT JOIN table2 t2 on t2.ocd = t1.ocd AND t2.switch = 'Y'
GROUP BY t1.acr
HAVING COUNT(t2.ocd) = COUNT(t1.ocd)