SQL Server - 选择具有两个匹配的其他列的列

时间:2016-01-13 07:37:17

标签: sql sql-server sql-server-2012

我有一张这样的表:

columna int
columnb int

一些示例数据:

columna columnb
   1       1
   1       2
   1       3
   2       1
   2       2
   2       4
   3       1
   3       3
   3       7
   4       3
   5       2
   5       3

我想选择columna,其中columna的相同值同时包含columnb中的1和3。

所以我上面的示例结果应该是:

1
3

我尝试过很多东西,但却无法得到我想要的东西,有人可以帮助我。

2 个答案:

答案 0 :(得分:1)

您可以使用intersect运算符,它返回两个输入查询输出的不同行。

因此,第一个查询应该是来自columna的记录的columnb = 1的值,第二个 - 来自具有columna的记录的columnb = 3的值,然后将两个查询的结果相交。

select columna
from your_table 
where columnb = 1

intersect

select columna
from your_table
where columnb = 3

答案 1 :(得分:0)

SELECT DISTINCT(t1.columnA) 
FROM Table_Name t1
INNER JOIN Table_Name t2 ON t1.columnA = t2.columnB