SQL ORDER BY несколькими столбцами
Я хочу сортировать таблицу продуктов двумя столбцами: prod_price
и prod_name
.
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
Как производится сортировка здесь? Я думаю, что это происходит сначала на prod_price
, а затем на prod_name
. Кроме того, как этот запрос отличается от этого:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_name;
Таблица моих продуктов выглядит следующим образом:
CREATE TABLE Products
(
prod_id char(10) NOT NULL ,
vend_id char(10) NOT NULL ,
prod_name char(255) NOT NULL ,
prod_price decimal(8,2) NOT NULL ,
prod_desc text NULL
);
Ответы
Ответ 1
Сортировка в ORDER BY
выполняется первым столбцом, а затем каждым дополнительным столбцом в указанном операторе.
Например, рассмотрим следующие данные:
Column1 Column2
======= =======
1 Smith
2 Jones
1 Anderson
3 Andrews
Запрос
SELECT Column1, Column2 FROM thedata ORDER BY Column1, Column2
будет сначала сортироваться по всем значениям в Column1
а затем отсортируйте столбцы с помощью Column2
, чтобы создать это:
Column1 Column2
======= =======
1 Anderson
1 Smith
2 Jones
3 Andrews
Другими словами, данные сначала сортируются в порядке Column1
, а затем каждое подмножество (Column1
строк, которые имеют 1
в качестве их значения) сортируются по порядку второго столбца.
Разница между двумя опубликованными вами утверждениями состоит в том, что строки в первом будут отсортированы сначала prod_price
(порядок цен, от самого низкого до самого высокого), а затем по порядку имени (что означает, что если два элемента имеют такая же цена, первая с более низким значением альфа для имени будет указана первой), а вторая будет сортироваться только в порядке имени (что означает, что цены будут отображаться в порядке, основанном на prod_name
без учета цены).
Ответ 2
Результаты упорядочиваются по первому столбцу, затем по второму и т.д. для такого количества столбцов, как предложение ORDER BY. Если вы хотите, чтобы результаты отсортированы в порядке убывания, предложение ORDER BY должно использовать ключевое слово DESC непосредственно после имени или номера соответствующего столбца.
Проверьте этот пример
SELECT first_name, last_name, hire_date, salary
FROM employee
ORDER BY hire_date DESC,last_name ASC;
Он будет заказывать подряд. Сначала закажите Hire_Date, затем LAST_NAME - Hire_Date.
Ответ 3
Это зависит от размера вашей базы данных.
SQL основан на теории SET: нет порядка, используемого при запросе таблицы.
Итак, если вы должны были выполнить первый запрос, он сначала заказывал бы по цене продукта, а затем по названию продукта, если бы в ценовой категории были какие-то дубликаты, например, $20, то они заказывали бы эти дубликаты по их именам, поэтому всегда поддерживая, что при запуске запроса он всегда возвращает тот же набор результатов в том же порядке.
Если вы должны были запустить второй запрос, он будет только заказывать по имени, поэтому, если бы было два продукта с тем же именем (по какой-то нечетной причине), то после запуска запроса у них не было бы гарантированного порядка.
Ответ 4
да, сортировка идет по-другому.
в первом сценарии, заказы на основе столбца1 и в дополнение к этому процессу далее путем сортировки colmun2 на основе столбца1..
во втором сценарии он заказывает полностью только на основе столбца 1...
пожалуйста, перейдите к простому примеру... u быстро заработает.
Ответ 5
Да, сортировка отличается.
Элементы в списке ORDER BY
применяются в порядке.
Позже пункты только порядка сверстников остались от предыдущего шага.
Почему бы вам просто не попробовать?