gpt4 book ai didi

mysql - SELECT CASE 问题

转载 作者:行者123 更新时间:2023-11-29 04:18:02 25 4
gpt4 key购买 nike

我想从我的数据库中获取过去 31 天的一些数据。当“finalized”列为 NULL 时,我想从“today”列中获取数据,但如果“finalized”列不是 NULL,我想从“finalized”列中获取数据。我总是想获得最后输入的行。

表我的收入

id          INT(11) AI
date datetime
today decimal(4,2) NULL
finalized decimal(4,2) NULL

id date today finalized
-----------------------------------------------
6 2016-02-04 04:52:00 0.39 NULL
5 2016-02-03 12:34:00 NULL 19.74
4 2016-02-03 12:33:00 15.96 NULL
3 2016-02-03 12:32:00 12.32 NULL
2 2016-02-02 15:16:00 NULL 9.16
1 2016-02-02 14:29:00 2.20 NULL

SQL

SELECT
date,
CASE
WHEN finalized=NULL
THEN today
WHEN finalized!=NULL
THEN finalized
END
AS earn
FROM MyEarnings
GROUP BY DATE_FORMAT(date, '%Y-%m-%d')
ORDER BY date ASC
LIMIT 0 , 31

这就是我的结局

date                   earn
---------------------------
2016-02-02 00:00:00 NULL
2016-02-03 00:00:00 NULL
2016-02-04 00:00:00 NULL

我想得到什么

date                   earn
----------------------------
2016-02-02 00:00:00 9.16
2016-02-03 00:00:00 19.74
2016-02-04 00:00:00 0.39

编辑

我还想获得每个月“最终确定”列中所有值的摘要,其中每天的最大“id”。

最佳答案

您不能将 null 与 != 进行比较,您应该像这样使用 is null 和 is not null:

SELECT
date,
CASE
WHEN finalized is null THEN today
ELSE finalized
END AS earn
FROM MyEarnings
GROUP BY DATE_FORMAT(date, '%Y-%m-%d')
ORDER BY date ASC LIMIT 0 , 31

另外,如果你的第一个条件是当它为 null 时,你不需要检查它是否不为 null,ELSE 就足够了,因为 null 的反义词不为 null

关于mysql - SELECT CASE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35176257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com