2012-05-03 57 views
1

我只查看一个表,我有我需要匹配的值,所以。SQL,匹配列b中的所有值,并返回列匹配的那些匹配

Col A/Col B 
1/1 
1/2 
1/3 
2/2 
2/3 
4/1 
4/3 

所以我传递的值是1和3,我会想返回1和4

我试过一组由一个可能,在这里我不得不使用两个子查询,但它不起作用。

编辑:理想情况下,我想使用选择查询,因为我需要在另一个查询内使用此查询,我建立了外部的SQL Server。

EDIT2:理想情况下,我想在我的输入通过为CSV字符串

+0

我不明白。为什么1和3会返回1和4? –

+0

什么是您的输入和输出标准。请提供更多解释。 –

+1

输入的标准将是'where col_B IN(1,3)'和输出将是'select Col_A' – Jules

回答

4
select ColA 
from your_table 
where ColB in(1, 3) 
group by ColA 
having count(ColA) > 1 
+0

为什么你在那里有'HAVING'语句:/ –

+0

+1这似乎是正确的答案 –

+1

@StuartBlackler:因为没有它,它会返回所有有* ** **的ColA, 1'或'3'作为值,但OP需要ColA和** **两个** –

0

如果我理解正确传递的值与ColumnB和返回值来自ColumnA:

SELECT  A.ColumnA 
FROM  [YOUR TABLE] A 
INNER JOIN [YOUR TABLE] ON (A.ColumnA = B.ColumnA AND B.ColumnB = 1) 
WHERE  A.ColumnB = 3 
+0

但是,我可以通过多个输入值:( – Jules

+0

)您如何传递值?可以你提供了一些代码? – weenoid