【问题标题】:Returning all results in one column, but using a where statement to filter another column返回一列中的所有结果,但使用 where 语句过滤另一列
【发布时间】:2014-03-25 10:06:53
【问题描述】:

使用 SQlite 3,并有一个如下所示的表

PKEY|TS      | A |B  |C
 1  |00:05:00|200|200|200
 2  |00:10:00|100|100|100
 3  |00:15:00|   |25 |
 4  |00:20:00|   |   |

目前我正在使用

select ts, (a+b+c) from tablename WHERE a !='null' AND b !='null' and c !='null';"

返回

TS      | (a+b+c)
00:05:00|600
00:10:00|300

我希望我的结果如下所示:

TS      | total
00:05:00|600
00:10:00|300
00:15:00|
00:20:00|

也就是说,我总是想返回 TS 列中的所有内容,但我不想返回总数,除非 A、B 和 C 有值。

我想我可能需要联合或联接,但我似乎找不到始终返回单列结果的示例。

【问题讨论】:

    标签: join sqlite union


    【解决方案1】:

    测试a != 'null' 永远不会是真的。你需要使用a is not null

    但是,如果任何数字为空,则要返回空总数,只需执行以下操作:

    select ts, a+b+c
    from tablename;
    

    为什么会这样?因为在 SQL 中,如果表达式的任何部分为 null,则整个表达式为 null。当您认为 null 表示“未知”时,这是有道理的。从逻辑上讲,当计算的一部分未知时,结果就是未知的。

    【讨论】:

    • 感谢您的帮助和背后的解释,非常感谢。看起来我需要阅读更多关于 SQL 中 null 用法的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2021-10-14
    • 2017-05-20
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多