mysql - Mysql '大于(>)' 查询总是返回 0
问题描述
我正在处理一个要显示即将到来的日期数量的查询。即使有大于当前日期的日期,以下查询也会返回 0。请帮我解决这个问题。
SELECT (case when b.booked_date > cast(now() as date) then sum(1) else sum(0) end) as upcoming_booked_facilities
from svk_apt_book_facilities b
where b.customer_id = 1
and b.association_id = 1
and b.is_active = 1
group by b.facility_id
解决方案
您需要对CASE
表达式求和才能进行条件聚合:
SELECT
facility_id,
SUM(CASE WHEN booked_date > CURDATE() THEN 1 ELSE 0 END) AS upcoming_booked_facilities
FROM svk_apt_book_facilities
WHERE
customer_id = 1 AND
association_id = 1 AND
is_active = 1
GROUP BY
facility_id;
您试图使用 sum 作为CASE
表达式的谓词,这可能不是您想要的。请注意,我也选择了facility_id
,因为您按该列分组。如果您想要对整个表格进行条件总和,则不要按设施选择或分组。
推荐阅读
- java - 在 JSP 页面中使用 request.getRealPath("/") 时出错
- c++ - 尝试构建 hello world 程序时从 QtCreator 获取错误消息,但代码仍然可以执行
- python - 从扩展用户模型中获取值错误
- laravel - 如何在现有项目中使用 Backpack for Laravel?
- reactjs - 为什么我不断收到 500(内部服务器错误)GET http://localhost:3000/favicon.ico 500(内部服务器错误)?
- core-data - 在 SwiftUI 中显示来自 CoreData 的图像
- mysql - MySQL SELECT 计数与 ORDER BY
- javascript - JavaScript 使用 classList 属性调用内部变量
- python - 使用 matplotlib 的屏幕词云上没有输出
- php - 切换器 php。我的问题是切换器。当我切换和表单应该动态更改