2016-07-26 94 views
0

我有了喜欢的条目SQL表之一:选择列A中列B ='值'的条目列表。然后,选择所有条目,其中A列在名单

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 

符号=“而不是”对应于RuleID ='3'和RuleID ='4'。我想

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

我该如何做到这一点与SQL服务器?

+2

更快('3','4')中的RuleID选择* – Kostya

回答

1

要它使用执行连接,其通常比使用IN子句

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

您应该使用in。例如:

SELECT * FROM表WHERE RULEID中(从表中选择RULEID其中SYMBOL = '不')

相关问题