【问题标题】:MySQL - if count in select subquery is null change to 0MySQL - 如果选择子查询中的计数为空,则更改为 0
【发布时间】:2021-03-03 08:54:36
【问题描述】:

我有以下查询:

select `jobs`.*, 
(SELECT COUNT(user_jobs_application.id) as count FROM user_jobs_application
join job_shifts on job_shifts.id = user_jobs_application.job_shift_id
where job_shifts.jobs_id = jobs.id
and user_jobs_application.status = 1
group by user_jobs_application.users_id
) as entries
from `jobs` where `jobs`.`deleted_at` is null order by `id` desc limit 25 offset 0

select 中的子查询将给出 null 而不是 0。我可以更改此设置,如果值为 null,它将显示 0?

【问题讨论】:

    标签: mysql sql count subquery aggregate-functions


    【解决方案1】:

    从子查询中删除group by 子句就足够了。无论如何都不需要它,因为它在您过滤的列上分组(并且它是必需的,那么我的意思是子查询可能返回多行,这会产生运行时错误)。

    select 
        j.*, 
        (
            select count(*) as count 
            from user_jobs_application uja
            join job_shifts js on js.id = uja.job_shift_id
            where js.jobs_id = j.id and uja.status = 1
        ) as entries
    from jobs j
    where j.deleted_at is null 
    order by id desc limit 25 offset 0
    

    您的查询的其他更改:

    • 大概,user_jobs_application(id) 不能为空;如果是这样,count(*) 已经足够好了,而且比count(user_jobs_application.id) 效率更高

    • 表别名使查询更容易读写

    【讨论】:

    • 感谢您的帮助和解释 :)
    猜你喜欢
    • 2020-06-14
    • 2012-01-24
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多