Я читаю какой-то старый код на работе, и заметил, что есть несколько представлений с order by 1
предложением. Что это делает?
Пример:
Create view v_payment_summary AS
SELECT A.PAYMENT_DATE,
(SELECT SUM(paymentamount)
FROM payment B
WHERE PAYMENT_DATE = B.PAYMENT_DATE
and SOME CONDITION) AS SUM_X,
(SELECT SUM(paymentamount)
FROM payment B
WHERE PAYMENT_DATE = B.PAYMENT_DATE
and SOME OTHER CONDITION) AS SUM_Y
FROM payment A
ORDER BY 1;
sql
sql-order-by
эхо
источник
источник
ORDER BY
вVIEW
. Стандартный SQL не позволяет этого. SQL Server запретил его с 2005 года. Для реализации SQL, которая действительно допускает это, поведение в значительной степени недокументировано и противоречит интуитивно понятному. Другими словами, определенно следует избегать.TOP
присутствует, и SSMS любит добавлятьTOP 100 PERCENT
.CHECK
ограничение в,CREATE TABLE
но на самом деле оно не соблюдает его - оно никогда не проверяется! Вопрос заключается в том, этот SQL продукты всегда чтитьORDER BY
в представлениях например , при использовании в запросе , который также имеетORDER BY
ли он получить отсортированные дважды? Они даже документируют поведение или вам нужно посмотреть планы выполнения, чтобы решить это? Я думаю, что мы знаем ответы;)ORDER BY 1
... использования трюка с перекрестным применением, когда вам нужен пустой псевдоним. К сожалению, код, например, слишком велик для комментария, поэтому я разместил его в качестве ответа ниже.Ответы:
Это:
... известен как "Порядковый номер" - число обозначает столбец на основе количества столбцов, определенных в предложении SELECT. В указанном вами запросе это означает:
Это не рекомендуемая практика, потому что:
источник
sql
тег. В стандартном SQL вOREDER BY
предложении допускаются только имена корреляций столбцов, потому что теоретически имена корреляций таблиц находятся вне области видимости, то есть должны бытьORDER BY PAYMENT_DATE;
. Конечно, не все реализации SQL соответствуют стандартам.;WITH cte AS( SELECT 1 AS Col1, 'z' AS Col2 UNION SELECT 2 AS Col1, 'y' AS Col2 UNION SELECT 3 AS Col1, 'x' AS Col2 ) SELECT Col2, Col1 FROM cte ORDER BY 1
Это полезно, когда вы используете операторы, основанные на множестве, например, union
источник
order by tablea.cola
это просто означает сортировку представления или таблицы по 1-му столбцу результата запроса.
источник
Я считаю, что в Oracle это означает порядок по столбцу № 1
источник
Это позволит отсортировать результаты по первому возвращенному столбцу. В примере он будет отсортирован по payment_date.
источник
Как уже упоминалось в других ответах
ORDER BY 1
заказы по первому столбцу.Я наткнулся на другой пример, где вы могли бы использовать его, хотя. У нас есть определенные запросы, которые необходимо заказать, выберите тот же столбец. Вы бы получили ошибку SQL, если бы упорядочить по
Name
ниже.источник
Также см:
http://www.techonthenet.com/sql/order_by.php
Для описания заказа по. Я кое-что узнал! :)
Я также использовал это в прошлом, когда я хотел добавить неопределенное количество фильтров в оператор SQL. Небрежно я знаю, но это сработало. :П
источник
Вот пример из тестовой базы данных сервера WAMP:
И когда это дается дополнительно
order by PRIVILEGE_TYPE
или может быть даноorder by 3
. Обратите внимание, что 3-й столбец (PRIVILEGE_TYPE
) сортируется по алфавиту.Определенно, длинный ответ и много прокрутки. Также я изо всех сил пытался передать вывод запросов в текстовый файл. Вот как это сделать без использования раздражающей
into outfile
вещи-И когда вы закончите, остановите
Надеюсь, это добавляет больше ясности.
источник