2013-12-20 4 views
0

нужно выбрать записи из tbl_A на основе поля A_Class от tbl_B нижеMS SQL coonditional проверка нулевого значения

SELECT * FROM tbl_A 
WHERE A_Class IN (SELECT A_Class FROM tbl_B) 

Однако мощь A_Class содержит NULL значение

Мне нужно добавить в другое состояние

Если A_Class содержит нулевое значение, то

WHERE A_Class IN (SELECT A_Class FROM tbl_B) OR A_Class IS NULL 

Если нет нулевое значение, условие для проверки NULL необходимо игнорировать/удалять

Итак, мой вопрос: возможно ли, чтобы он стал единым запросом?

ответ

1

вы можете попробовать этот код, если не пустые значения (я имею в виду «») в A_Class:

SELECT * FROM #tbl_A 
WHERE exists 
    (SELECT * FROM #tbl_B 
    where isnull(#tbl_A.A_Class,'')=isnull(#tbl_B.A_Class,'')) 

Если пустые значения присутствуют, вы можете использовать даже это: isnull(#tbl_A.A_Class,'NULL')=isnull(#tbl_B.A_Class,'NULL') напечатанной фразу «NULL».

+0

Это делает трюк! Спасибо! – My2ndLovE

0

Если вы хотите, чтобы показать все записи без нулевых значений: SELECT a.* FROM tbl_A a INNER JOIN tbl_B b ON a.A_Class = b.A_Class WHERE a.A_Class IS NOT NULL;

Если вы хотите, чтобы показать все записи без нулевых значений из tbl_A и все из них, которые находятся в tbl_B: SELECT a.* FROM tbl_A a LEFT JOIN tbl_B b ON a.A_Class = b.A_Class WHERE a.A_Class IS NOT NULL;

Если вы хотите, чтобы показать все записи без нулевых значений из tbl_B и все из них, которые находятся в tbl_A: SELECT a.* FROM tbl_A a RIGHT JOIN tbl_B b ON a.A_Class = b.A_Class WHERE b.A_Class IS NOT NULL;

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