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 применяются в порядке.
Позже пункты только порядка сверстников остались от предыдущего шага.

Почему бы вам просто не попробовать?