Mysql获取一个字段的最小值,只要另一个字段等于1
我编写了一个复杂的查询,最初它确实从中检索到了我想要的所有数据。现在我意识到我需要一个字段的值与现在的值略有不同 我有:IFMINtasks.due_dateMysql获取一个字段的最小值,只要另一个字段等于1,mysql,Mysql,我编写了一个复杂的查询,最初它确实从中检索到了我想要的所有数据。现在我意识到我需要一个字段的值与现在的值略有不同 我有:IFMINtasks.due_date
SELECT
tickets.id,
tickets.user_id,
tickets.name,
COUNT(DISTINCT tasks.id) AS numTasks,
IF(MIN(tasks.due_date) < NOW(),1,0) AS taskoverdue,
IF(tickets.due_date < NOW(),1,0) AS ticketoverdue,
tasks.queue_id AS queue_id ,
IF(MIN(tasksteps.time_due) < NOW(),1,0) AS taskstepoverdue,
COUNT(DISTINCT ticketnotes.ticket_id) as notes
FROM
tickets
LEFT OUTER JOIN ticketsinqueues ON tickets.id = ticketsinqueues.ticket_id
LEFT OUTER JOIN tasks ON tickets.id = tasks.ticket_id
LEFT OUTER JOIN tasksteps ON tasks.id = tasksteps.task_id
LEFT OUTER JOIN ticketnotes ON tickets.id = ticketnotes.ticket_id
WHERE
ticketsinqueues.queue_id != tasks.queue_id AND
tickets.status = (var decided on run time)
GROUP BY
tickets.id,tasks.queue_id
UNION
SELECT
tickets.id,
tickets.user_id,
tickets.name,
COUNT(DISTINCT tasks.id) AS numTasks,
IF(MIN(tasks.due_date) < NOW(),1,0) AS taskoverdue,
IF(tickets.due_date < NOW(),1,0) AS ticketoverdue,
tasks.queue_id AS queue_id ,
IF(MIN(tasksteps.time_due) < NOW(),1,0) AS taskstepoverdue,
COUNT(DISTINCT ticketnotes.ticket_id) as notes
FROM
tickets
LEFT OUTER JOIN ticketsinqueues ON tickets.id = ticketsinqueues.ticket_id
LEFT OUTER JOIN tasks ON tickets.id = tasks.ticket_id
LEFT OUTER JOIN tasksteps ON tasks.id = tasksteps.task_id
LEFT OUTER JOIN ticketnotes ON tickets.id = ticketnotes.ticket_id
WHERE
ticketsinqueues.queue_id = tasks.queue_id AND
tickets.status = (var decided on run time)
GROUP BY
tickets.id,tasks.queue_id
UNION
SELECT
tickets.id,
tickets.user_id,
tickets.name,
0 AS numTasks,
0 AS taskoverdue,
IF(tickets.due_date < NOW(),1,0) AS ticketoverdue,
ticketsinqueues.queue_id AS queue_id ,
0 AS taskstepoverdue,
0 AS notes
FROM
tickets
LEFT OUTER JOIN ticketsinqueues ON tickets.id = ticketsinqueues.ticket_id
WHERE
tickets.status = (var decided on run time) AND
NOT EXISTS (
SELECT
*
FROM
tasks
WHERE
tickets.id = tasks.ticket_id AND
tickets.queue_id = tasks.queue_id
GROUP BY
tasks.ticket_id,
tasks.queue_id)
ORDER BY id desc
任何帮助都将不胜感激 哥们,这太简单了,太合乎逻辑了,我简直不敢相信我居然想不出来。谢谢,你太棒了。
MAX(tasks.completed != 1 AND tasks.due_date < NOW()) AS taskoverdue