EDIT:
Постараюсь объяснить это более подробно как можно лучше. Я попытался сделать запрос немного проще, подумав, что его будет легче понять, но, возможно, это был плохой ход.
Я пытаюсь получить PK_Queue и FK_Queue_Milestone из 1-го ряда моей таблицы Queue , упорядоченной по PriorityScore DESC и Время добавлено ASC
Я хочу получить только первую строку, но мне посоветовали не использовать TOP (1) , потому что это приведет к другому SELECT, выполненному для моего исходного выбора.
Это мой запрос:
SELECT
@Local_PK_Queue = Q.PK_Queue,
@Local_PK_Milestone_Validate = Q.FK_Queue_Milestone
FROM dbo.Queue AS Q
INNER JOIN @Local_PKHolderTable AS P
ON Q.FK_Queue_Process = P.PK_Process
AND Q.FK_Queue_Milestone = P.PK_Milestone
AND Q.FK_Queue_QueueType = P.PK_QueueType
WHERE Q.FK_Queue_Milestone = P.PK_Milestone
AND Q.FK_Queue_Process = P.PK_Process
AND Q.Tags LIKE '%' + @Input_Tags + '%'
AND ((FK_Queue_State = 5 AND TimeDeferred < GETUTCDATE()) OR (FK_Queue_State = 1))
AND Q.FK_Queue_Robot IS NULL
AND Q.FK_Queue_QueueType = P.PK_QueueType
ORDER BY
Q.PriorityScore DESC,
Q.TimeAdded
Когда я пытаюсь выполнить запрос, он, кажется, не упорядочивает его должным образом, потому что всегда получает последнюю строку моей таблицы.
Так же было проведено некоторое исследование и наткнулся на этот вопрос здесь.
Кажется, проблема та же, что и у меня, но я использую MySQL вместо SQL Server.
TLDR: хотите ЗАКАЗАТЬ ПО ПРИОРИТЕТНОЙ СЧЕТЕ DESC и TimeAdded, но не работает должным образом