这是在SQL Server中。表1有两列,Column1和Column2,Column1是复合键的一部分。 Column1可以与column2的多个值相关联。
这样的事情:
Column1 | Column2
---------------------
value1 | Value20
Value1 | Value21
Value1 | Value22
查询结果应该基于value1是否与value20相关联。 如果value1与value20关联,则应返回row2和row3,否则不返回任何内容。
我尝试自己加入桌子,但我无法得到我需要的最终结果。
SELECT *
FROM TABLE1 T1
JOIN TABLE1 T2 ON T1.COLUMN1 = T2.COLUMN1
WHERE T1.COLUMN2 IN (VALUE20)
AND T2.COLUMN2 IN (VALUE21, VALUE22);
我不能在这里使用union,因为查询中涉及其他表以返回其他值。
答案 0 :(得分:2)
WITH candidates AS (
SELECT Column1, Column2
FROM Table1
WHERE Column2 = 'Value20'
)
SELECT t.Column1, t.Column2
FROM Table1 t
JOIN candidates c ON (c.Column1 = t.Column1 AND t.Column2 <> 'Value20')