Re: объясните логику? [MSSQL]
От: Джеффри  
Дата: 10.06.19 17:12
Оценка: 17 (4) +1
Здравствуйте, Kaifa, Вы писали:

K>выдаст ошибку? какая ему разница?


Во втором случае ORDER BY не нужен, т.к. не влияет на результат запроса никаким образом, в отличии от примера с ТОП. Но при обработке такой конструкции у engine-а будет такой выбор — проигнорировать ее (мне кажется, что так происходит в некоторых СУБД), тупо исполнить (что бессмысленно), выдать ошибку (как происходит в T-SQL).

Рискну предположить, что Майкрософт выбрала последний вариант для большей надежности, чтобы разработчики не оставляли ненужные строки (которые все равно не будут выполняться) и чтобы не было случайных ошибок (когда ORDER BY по ошибке прописали внутри подзапроса).

Кто-нибудь ведь напишет:

select top 1 * from (
    select val 
    from #t
    order by val
) s


А потом будет жаловаться, что случайная строка возвращается...
Отредактировано 10.06.2019 17:14 Джеффри . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.