2016-07-26 3 views
0

У меня есть таблица SQL, который имеет записи, как:Выберите список записей в столбце A, где столбец B = 'значение'. Затем выберите все записи, где столбец А один из списка

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

выберите * из таблицы, где RuleID в ('3', '4') – Kostya

ответ

1

Чтобы сделать это с помощью Соединения, которые, как правило, быстрее, чем при использовании в операторе

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

Для этого вы должны использовать in. Например:

Выберите * из таблицы WHERE RULEID в (выберите RULEID из таблицы, где SYMBOL = «не»)

Смежные вопросы