Псевдоним проигнорирован в OrderBy

извините, но ответ является четким и простой

https://github.com/Bumblebee-Project/bumblebee-ui/blob/master/README#L27

7
задан Nate Barbettini 15 December 2015 в 19:14
поделиться

2 ответа

Это изменение поведения между SQL Server 2000 и SQL Server 2005

http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/198b29db -f223-4aaf-a9f2-965c8a1fa8eb

10
ответ дан 6 December 2019 в 07:27
поделиться

Это стандартное поведение ANSI SQL, которое было принято SQL Server, начиная с версии 2005.

ORDER BY НЕ работает с значения столбцов из исходных таблиц (предложение FROM), а технически он работает ТОЛЬКО со значениями столбца output в предложении SELECT (**). Поэтому, когда вы говорите «ShowOrder» в предложении ORDER BY, на самом деле он использует значение ShowOrder в списке вывода (которое оказывается pr.ShowOrder). Если вы хотите использовать оба ShowOrder, вы должны поместить их обоих в предложение SELECT с разными именами.

Причина, по которой он не лает при использовании псевдонимов таблиц исходных (что технически и должно), заключается в совместимости с SQL Server 2000, но это опасная совместимость. Независимо от того, какой псевдоним вы используете в ORDER BY, на самом деле он использует только тот, который отображается в списке вывода.

(** - и да, есть способы обойти это, но они в основном предназначены для совместимость с предыдущими версиями. Лучше просто использовать стандарт).

в основном для обеспечения некоторой совместимости с предыдущими версиями. Лучше просто использовать стандарт).

здесь в основном для обеспечения некоторой совместимости с предыдущими версиями. Лучше просто использовать стандарт).

12
ответ дан 6 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: