结果基于 SQL 服务器中的列值
Results based on column value in SQL Server
这是在 SQL 服务器中。 Table 1 有两列,Column1 和 Column2,Column1 是组合键的一部分。 Column1 可以关联到 column2 的多个值。
像这样:
Column1 | Column2
---------------------
value1 | Value20
Value1 | Value21
Value1 | Value22
查询结果应以value1是否关联到value20为准。
如果 value1 关联到 value20,它应该 return row2 和 row3,否则 return 什么都没有。
我试过自己加入table,但我无法得到我需要的最终结果。
SELECT *
FROM TABLE1 T1
JOIN TABLE1 T2 ON T1.COLUMN1 = T2.COLUMN1
WHERE T1.COLUMN2 IN (VALUE20)
AND T2.COLUMN2 IN (VALUE21, VALUE22);
我不能在这里使用联合,因为查询中涉及其他 table 到 return 其他值。
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')
这是在 SQL 服务器中。 Table 1 有两列,Column1 和 Column2,Column1 是组合键的一部分。 Column1 可以关联到 column2 的多个值。
像这样:
Column1 | Column2
---------------------
value1 | Value20
Value1 | Value21
Value1 | Value22
查询结果应以value1是否关联到value20为准。 如果 value1 关联到 value20,它应该 return row2 和 row3,否则 return 什么都没有。
我试过自己加入table,但我无法得到我需要的最终结果。
SELECT *
FROM TABLE1 T1
JOIN TABLE1 T2 ON T1.COLUMN1 = T2.COLUMN1
WHERE T1.COLUMN2 IN (VALUE20)
AND T2.COLUMN2 IN (VALUE21, VALUE22);
我不能在这里使用联合,因为查询中涉及其他 table 到 return 其他值。
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')