MySQL - 如果选择子查询中的计数为空,则更改为 0
Posted
技术标签:
【中文标题】MySQL - 如果选择子查询中的计数为空,则更改为 0【英文标题】:MySQL - if count in select subquery is null change to 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?
【问题讨论】:
【参考方案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)
效率更高
表别名使查询更容易读写
【讨论】:
感谢您的帮助和解释 :)以上是关于MySQL - 如果选择子查询中的计数为空,则更改为 0的主要内容,如果未能解决你的问题,请参考以下文章