#sql #sql-server
#sql #sql-сервер
Вопрос:
Я прочитал другие темы по этому вопросу, но они, похоже, не соответствуют моему сценарию. У меня есть запрос, который упорядочивает результаты по дате ввода ASC, а затем по сортировке ASC.
Показанные результаты упорядочены правильно, однако, когда я меняю свой запрос, чтобы извлекать только TOP 1, вместо этого возвращается второй результат. Я понятия не имею, почему или как это происходит.
Комментарии:
1. Это удивительно. Можете ли вы предоставить минимально воспроизводимый пример, демонстрирующий проблему? Вы могли бы использовать db<>fiddle .
2. Можете ли вы показать свой запрос? Мы не можем догадаться, как это написано, но если мы сможем увидеть воспроизведение, мы, вероятно, сможем определить, как вы попали на свой скриншот.
Ответ №1:
Если ваш запрос имеет order by
самый внешний select
, то результаты должны быть возвращены в таком порядке. Точка.
Если order by
находится где-либо еще — в подзапросе или в спецификации рамки окна — тогда результаты могут выглядеть так, как будто они упорядочены, но порядок не гарантируется.
Я предполагаю, что у вас нет явного order by
того, что запрос должен выполнять то, что вы намереваетесь.
Кроме того, хотя это и не относится к вашим образцам данных, если ключи имеют одинаковое значение, они могут отображаться в любом порядке — и в разных позициях при многократном запуске запроса.
Комментарии:
1. Да, это был запрос ОБЪЕДИНЕНИЯ. Я должен быть первым в первой части запроса, но я хотел получить TOP 1 из всех результатов. Я понял это через несколько секунд после того, как опубликовал это, и как раз отвечал на свой собственный вопрос.