У меня есть запрос, который выглядит следующим образом:MySQL COUNT() возвращает 0
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 Как проверить, что запись существует для этого условия? –