Это отсортирует их по support_case, а затем по самому старому открытому.
Открыть будет отсортировано самым старым-> самым новым, затем будет отсортировано в ожидании, отсортировано самым старым-> самым новым, затем отсортировано по готовности, самым старым-> самым новым.
SELECT *
FROM support_case
WHERE (
case_status = 'Pending'
OR case_status = 'Open'
OR case_status = 'Ready' )
AND case_queue = 'Software'
ORDER BY support_case ASC, lastUpdate ASC
LIMIT 1
Если у вас были разные значения состояния (которые были не совсем в алфавитном порядке), вы могли бы реструктурировать свою базу данных или добавить новый столбец, чтобы присвоить числовое значение вашему case_status. Затем вы можете добавить ORDER BY case_status_value DESC
к вашему запросу.
Итак:
'Open' = 10
«В ожидании» = 5
«Готов» = 1
Так что сначала возвращаются Open, затем ожидающие, затем готовые. Тогда вы можете запросить:
SELECT *
FROM support_case
WHERE (
case_status = 'Pending'
OR case_status = 'Open'
OR case_status = 'Ready' )
AND case_queue = 'Software'
ORDER BY case_status_value DESC,
lastUpdate ASC
LIMIT 1
См. Комментарии @ konerak ниже для другого варианта, который выполняет то же самое, без изменений структуры столбца.