我需要根据tbl_B中的A_Class字段从tbl_A中选择记录,如下所示
SELECT * FROM tbl_A
WHERE A_Class IN (SELECT A_Class FROM tbl_B)
但是,A_Class可能包含NULL值
我需要添加另一个条件
如果A_Class包含NULL值,则
WHERE A_Class IN (SELECT A_Class FROM tbl_B) OR A_Class IS NULL
如果没有空值,则检查NULL的条件需要忽略/删除
所以我的问题是,是否有可能使它成为单个查询?
答案 0 :(得分: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”。
答案 1 :(得分: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;