Вот некоторые примеры входных данных, которые, я надеюсь, прояснят следующее объяснение:
id | first_name | last_name | street_address
10 | Albert | Camus | 300 Carroll St
20 | Caroline | Aherne | 200 Carroll St
30 | Bertoldt | Brecht | 500 Carroll St
40 | Albert | Dumbledore | 400 Carroll St
50 | Bertoldt | Brecht | 100 Carroll St
Здесь у нас есть пять записей , которые рассказывают нам полезные вещи, такие как Альберт Камюживет на 300 Кэрролл-стрит, а Кэролайн Ахерн живет на 200 Кэрролл-стрит. Важно понимать, что в SQL-запросе он получает записи;когда мы используем ORDER BY, он сортирует записи, а не отдельные столбцы.
Таким образом, когда мы сортируем эти записи по порядку first_name, last_name, street_address
, мы получаем следующий результат:
id | first_name | last_name | street_address
10 | Albert | Camus | 300 Carroll St
40 | Albert | Dumbledore | 400 Carroll St
50 | Bertoldt | Brecht | 100 Carroll St
30 | Bertoldt | Brecht | 500 Carroll St
20 | Caroline | Aherne | 200 Carroll St
Результирующий набор - это записи таблицы, отсортированные в порядке first_name
;когда две записи имеют одинаковое значение first_name
, сортировка использует last_name
для разрыва связи;когда first_name
и last_name
одинаковы, сортировка использует street_address
.Это именно то, что мы ожидали.Записи остаются нетронутыми.
Что бы значило сортировать столбцы независимо?На 100 Кэрролл-стрит нет такого человека, как Альберт Ахерн.Так как бы SQL составил один?
Если вы все еще не можете понять, как это работает, обратите внимание, что я добавил суррогатный первичный ключ в таблицу.Столбец ID уникально идентифицирует каждую запись.Таким образом, ID = 30 идентифицирует Бертольдта Брехта, живущего по адресу: 500 Carroll Street. Предположим, что ORDER BY сработал так, как вы ожидаете: каким будет значение ID для Альберта Ахерна, живущего на 100 Carroll Street?1025 * В соответствии с формами нормализации в таблице все записи должны быть связаны с первичным ключом, и это означает, что вы не можете сортировать несколько столбцов, тогда зачем нам сортировать несколько столбцов?
Нормализация имеетничего общего с этим.Мы можем захотеть упорядочить по столбцам составного ключа или даже по неключевым атрибутам.В таких условиях нам часто нужно заказывать по нескольким столбцам.
Например, я тасую колоду карт.Теперь я прошу вас взять пять карт и положить их в порядке возрастания, тузы низкие.Достаточно просто.За исключением того, что вы нарисовали семерку пик и семерку сердец.Что приходит первым?Пики выше сердец, поэтому семь червей, а потом семь пиков.Но оба до девяти клубов.