Я работаю над запросом, и я немного застрял.Выбор строк с наивысшим приоритетом
Вот мой запрос:
SELECT *
FROM
routine_actions AS ra
JOIN
routines AS r ON r.id = ra.routine_id
JOIN
account_routines AS ar ON ar.routine_id = r.id
JOIN
accounts AS a ON a.id = ar.account_id
WHERE
(ra.last_run + INTERVAL ra.interval_minutes MINUTE <= NOW() OR ra.last_run IS NULL)
AND
r.created_at + INTERVAL r.runtime_days DAY > NOW()
То, что я пытаюсь сделать:
account
имеет много процедур. Только один routine
может использоваться одновременно, и это routine
с наивысшим приоритетом. Таблица, которая содержит столбец приоритета, - account_routines
, поскольку учетные записи могут повторно использовать процедуры и задавать другой приоритет.
Более высокое число равно более высокому приоритету. В настоящее время запрос вытаскивает все подпрограммы из всех учетных записей. Но мне нужна только одна процедура с наивысшим приоритетом от каждой учетной записи.
Как это возможно? Мне не нужно решение, просто чтобы посмотреть, чтобы я мог понять, как решить эту проблему.
вы попробовали 'ORDER BY ar.priority desc' ?? –
'ORDER BY' будет по-прежнему включать в себя процедуры с более низким приоритетом? Я работаю с несколькими учетными записями, и мне нужна только 1 процедура для каждой учетной записи. Если я пользователь 'ORDER BY', это даст очень смешанный набор результатов. – BugHunterUK