首页 > 解决方案 > 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

标签: mysqldatecompare

解决方案


您需要对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,因为您按该列分组。如果您想要对整个表格进行条件总和,则不要按设施选择或分组。


推荐阅读