Я разделяю мнение с предыдущими ответами о том, что вообще не стоит делать order by
в подзапросе. Однако я обнаружил, что иногда это очень полезно. Я предполагаю, что пример запроса в pringlesinn является простым примером более сложного требования. Вы можете сделать order by
в подзапросе следующим образом:
SELECT u.id
FROM user u
WHERE exists
(SELECT ROW_NUMBER() OVER (ORDER BY l.idLocation DESC) FROM location l WHERE u.id = l.id and l.id = ?id)
Однако вы заметите, что в предложении WHERE больше не используется оператор IN. Вместо этого вы должны использовать «EXISTS» и выполнить коррелированный подзапрос. Или вы могли бы сделать что-то вроде этого:
SELECT u.id
FROM user u inner join
(
SELECT ROW_NUMBER() OVER (ORDER BY l.idLocation DESC) as rowid, l.id
FROM location l
WHERE l.id = ?id
) as z on z.id = u.id
С наилучшими пожеланиями,
Джеймс