Заказ SQL по ASC и DESC - PullRequest
       22

Заказ SQL по ASC и DESC

0 голосов
/ 18 декабря 2018

Следующий оператор SQL выбирает всех клиентов из таблицы Customers, отсортированных по столбцам Country и CustomerName, но что меня смутило, так как результат по стране в порядке, потому что он ASC - по умолчаниютак началось с АЗ, так как CustomerName должен быть ASC, но результата нет!так что это не ASC, почему?

enter image description here

Ответы [ 4 ]

0 голосов
/ 09 января 2019

Результаты, показанные на изображении, верны.Поскольку в запросе указывается ORDER BY Country, CustomerName, то в следующем порядке сначала выполняется сортировка по названию страны, а для каждой страны клиенты сортируются в порядке возрастания.

0 голосов
/ 18 декабря 2018

Сортировка в порядке, и делает то, что должен.

Сортировка по стране , а затем по клиенту.Клиенты имеют по порядку ... в каждой стране .

Более внимательно посмотрите на результат.В Аргентине клиенты в порядке, а также в Бразилии и т. Д.

Насколько точно вы ожидаете сортировку по обоим столбцам одновременно?Данные в отсортированных столбцах перестали бы соответствовать данным из той же строки.Например, «Ранчо Гранде» должно быть где-то рядом с дном, а не рядом с «Аргентиной», к которой он принадлежит.

То, что вы ожидаете, не имеет смысла, логически.

0 голосов
/ 18 декабря 2018

Отображаемые результаты отображаются в указанном порядке.

  ORDER BY Country, CustomerName 

указывает, что строки будут упорядочены первыми по значению Country.И результаты выглядят правильно упорядоченными: Аргентина, Австрия, Бельгия, Бразилия.

Для строк с одинаковым значением Country строки также будут упорядочены по значению CustomerName.

Опять же, каждый набор строк с одинаковым значением Country выглядит правильно, например, для Бразилии: C..., F... и G...


Если бы мы указали ORDER BY CustomerName, то получили бы строки в другом порядке.С примерами данных, без повторения значений CustomerName, мы можем добавить другие выражения к ORDER BY, и они не будут влиять на порядок строк.

0 голосов
/ 18 декабря 2018

Ваш результат действительно упорядочен правильно.Сначала заказы по стране, затем заказы по CustomerName.В Аргентине ваши клиенты отсортированы правильно.В Бразилии они отсортированы правильно.

Если вы ожидали, что Comercio Miniero будет вторым в списке, спросите себя, как это повлияет на порядок сортировки в вашей стране.Порядок сортировки будет выполнять весь первый столбец, а затем в этом существующем порядке - второй столбец, который вы перечислили.

...