【问题标题】:Check if row exists and if it doesn't output a specific value检查行是否存在以及它是否不输出特定值
【发布时间】:2015-01-20 05:34:57
【问题描述】:

我有这个查询,其中我想要做的是,如果 id 和值为 null,它只会在该行为 null 的位置显示值 0.111。

SELECT FROM_UNIXTIME(t_stamp/1000, '%m/%d/%Y %l:%i %p') as t_stamp,

    ROUND(MAX(
            CASE 
            WHEN id = "731" AND value IS NULL THEN 0.11
            WHEN id = "731" THEN value
            END
            ),3
        ) as Val1,

    ROUND(MAX(
            CASE 
            WHEN id = "732" AND value IS NULL THEN 0.11
            WHEN id = "732" THEN value
            END
            ),3
        ) as Val2

FROM table1
WHERE id IN ("731", "732")  and

from_unixtime(t_stamp/1000) BETWEEN "2014-11-01 09:00:00" AND "2014-11-01 12:00:00"

GROUP BY DATE(from_unixtime(t_stamp/1000)), HOUR(from_unixtime(t_stamp/1000)), MINUTE(from_unixtime(t_stamp/1000)) DIV 1

我已经尝试了几次,但它不起作用,原因是当我检查数据库时,问题是该行不为空,它不遵循第一个“WHEN”的原因是因为该行不存在。

数据是这样的

|       t_stamp         |   Val1    |   Val2    |
|   11/01/2014 9:00 AM  |   0.022   |   0.044   |
|   11/01/2014 9:01 AM  |   0.023   |   0.045   |
|   11/01/2014 9:02 AM  |   0.022   |   0.044   |
|   11/01/2014 9:03 AM  |   0.022   |   0.044   |
|   11/01/2014 9:04 AM  |   0.022   |   0.044   |
|   11/01/2014 9:05 AM  |   NULL    |   0.046   |
|   11/01/2014 9:06 AM  |   0.023   |   0.040   |

上午 9:05 没有行。这是我希望的输出:

|       t_stamp         |   Val1    |   Val2    |
|   11/01/2014 9:00 AM  |   0.022   |   0.044   |
|   11/01/2014 9:01 AM  |   0.023   |   0.045   |
|   11/01/2014 9:02 AM  |   0.022   |   0.044   |
|   11/01/2014 9:03 AM  |   0.022   |   0.044   |
|   11/01/2014 9:04 AM  |   0.022   |   0.044   |
|   11/01/2014 9:05 AM  |   0.11    |   0.046   |
|   11/01/2014 9:06 AM  |   0.023   |   0.040   |

我检查了 id 731 的 val 并仅使用该 ID 进行了单独的 SELECT,发现在上午 9:05 的时间没有行,但在 732 中有。

如果不实际执行 INSERT 并仅输出 0.11 值,这是否可能?

【问题讨论】:

    标签: mysql row exists not-exists


    【解决方案1】:

    我觉得你的逻辑有点不对劲。它正在寻找带有 731 的行中的 NULL 值。它不是在寻找缺失的行。相反,试试这个:

    COALESCE(ROUND(MAX(CASE WHEN id = "731" THEN value END), 3), 0.11)
    

    【讨论】:

    • 谢谢!它现在工作!太棒了太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多