在列A中选择条目列表,其中列B =“值”。然后选择列A为列表之一的所有条目

时间:2016-07-26 18:18:28

标签: sql sql-server

我有一个SQL表,其中包含以下条目:

RuleID Symbol    
1      OR    
1      123   
1      363    

2      AND    
2      847   
2      287   

3      AND    
3      NOT   
3      234   
3      867   

4      NOT    
4      995  

结果应为:

3      AND    
3      NOT   
3      234   
3      867 

4      NOT    
4      995  

Symbol ='NOT'对应于RuleID ='3'和RuleID ='4'。我想

select * in table where RuleID = '3' or '4' 

如何使用SQL Server执行此操作?

2 个答案:

答案 0 :(得分:4)

您应该使用in。例如:

从表WHERE RULEID中选择*(从表中选择RULEID,其中SYMBOL =' not')

答案 1 :(得分:1)

使用连接来做它通常比使用IN子句

更快
SELECT T.* 
from table T INNER JOIN 
( SELECT Distinct RuleID 
  FROM table 
  WHERE SYMBOL = 'not' 
) A
ON A.RuleID = T.RuleID