首页 > 解决方案 > 如果过滤后值不匹配,则返回 null

问题描述

如果在使用 where 子句后与 join 子句不匹配,有谁知道如何返回 null 行?

我有两张桌子,我们称它们为 A 和 B。

例子:

TABLE A                    TABLE B 
COL1  COL2                COL1   COL2  COL3  COL 4         
A       1                 A       1     sd    01/02
B       2                 B       2     aa    01/05
C       3                 C       3     bb    01/07

我使用以下查询:

SELECT * 
FROM TABLE A as a 
LEFT JOIN TABLE B as b ON a.COL1 = b.COL1 AND a.COL2 = b.COL2 

我得到的结果是

    COL1  COL2    COL1.2   COL2.2  COL3  COL4         
     A       1      A       1     sd    01/02
     B       2      B       2     aa    01/05
     C       3      C       3     bb    01/07

现在当我添加这个 where 子句时:

SELECT * 
FROM TABLE A as a 
LEFT JOIN TABLE B as b ON a.COL1 = b.COL1 AND a.COL2 = b.COL2 
WHERE COL4 >= '01/05'

我明白了:

    COL1  COL2    COL1.2   COL2.2  COL3  COL4         
     B       2      B       2      aa    01/05
     C       3      C       3      bb    01/07         

我的问题是我怎样才能让查询显示这个:

    COL1  COL2    COL1.2   COL2.2  COL3  COL4         
     A      NULL   NULL    NULL    NULL  NULL
     B       2      B       2      aa    01/05
     C       3      C       3      bb    01/07

任何帮助或想法将不胜感激。

谢谢

标签: sqldb2

解决方案


有点奇怪的要求?我可以问一下,当您的 where 子句明确声明要排除 NULL 值时,为什么要将行返回为 NULL?如果您可以提供更多详细信息,我可以帮助您找到更好的方法。


推荐阅读