【发布时间】:2013-08-12 21:53:23
【问题描述】:
我的查询如下所示:
SELECT
app.application_id,
j.job_number,
j.job_id,
j.job_title,
j.job_city,
j.job_state,
p.person_id AS candidate_id,
p.first_name,
p.last_name,
app.start_date,
ope1.percent_complete,
MAX(CASE
WHEN r.role_display_name = 'ENG - Recruiter' THEN
(SELECT CASE WHEN COUNT(last_name) = 0 THEN
'Unassigned'
ELSE
COUNT(last_name)
END AS uname
FROM users
JOIN job_roles ON job_roles.user_id = users.user_id
WHERE job_id = j.job_id
AND role_id = r.role_id
)
ELSE '' END) AS role_3
我的问题是COUNT(last_name)不会返回0,因为没有返回记录,所以没有NULL的值。一切都说得通,但是我尝试将其包装在IFNULL()、ISNULL() 中,但似乎都没有解决这个问题。没有记录时如何让它返回 0? COUNT() 聚合中是否需要另一个子查询?我真的不想使用另一个子查询....
【问题讨论】:
-
这行不通。您正在尝试在子选择的行上下文中使用聚合函数的结果。直到扫描整个表之后,COUNT() 结果才可用
-
如果您使用 php 处理内容,您可以作弊并使用
if (!$lname_count) $lname_count = 0; -
@MarcB 那么我如何检查是否存在符合该条件的记录?
-
您的完整查询是什么?您有聚合但没有
group by和from语句。另外,你能更好地格式化你的查询吗?