HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>У выборки данных из базы нет определенного порядка. Точнее порядок есть, но он логически не обоснован. По умолчанию база возвращает данные в том порядке, в котором ей удобнее. По счастливому стечению обстоятельств этот порядок может совпасть с желаемым, но рассчитывать на это нельзя.</p>
1 <p>У выборки данных из базы нет определенного порядка. Точнее порядок есть, но он логически не обоснован. По умолчанию база возвращает данные в том порядке, в котором ей удобнее. По счастливому стечению обстоятельств этот порядок может совпасть с желаемым, но рассчитывать на это нельзя.</p>
2 <p>Теоретически порядок может поменяться при следующем запросе, или когда количество данных в таблице изменится. Обновление версии базы данных тоже может повлиять на это.</p>
2 <p>Теоретически порядок может поменяться при следующем запросе, или когда количество данных в таблице изменится. Обновление версии базы данных тоже может повлиять на это.</p>
3 <p>В этом уроке мы разберем, как сортировать данные в базе в том порядке, который нам нужен. Для этого используется запрос ORDER BY.</p>
3 <p>В этом уроке мы разберем, как сортировать данные в базе в том порядке, который нам нужен. Для этого используется запрос ORDER BY.</p>
4 <h2>Общая схема запроса на сортировку</h2>
4 <h2>Общая схема запроса на сортировку</h2>
5 <p>Допустим, нам нужно сортировать данные в базе:</p>
5 <p>Допустим, нам нужно сортировать данные в базе:</p>
6 <p>Сортировка задается с помощью части ORDER BY, за которой следует имя поля - по нему происходит сортировка:</p>
6 <p>Сортировка задается с помощью части ORDER BY, за которой следует имя поля - по нему происходит сортировка:</p>
7 <p>Такой запрос вернет всю информацию о пользователях, отсортированную по username. Если порядок не указан, то сортировка происходит по возрастанию ASC.</p>
7 <p>Такой запрос вернет всю информацию о пользователях, отсортированную по username. Если порядок не указан, то сортировка происходит по возрастанию ASC.</p>
8 <p>Сортировка подразумевает сравнение значений между собой. По какому принципу база данных сортирует строки username как в примере выше? Самый распространенный способ - лексикографический порядок, то есть по алфавиту.</p>
8 <p>Сортировка подразумевает сравнение значений между собой. По какому принципу база данных сортирует строки username как в примере выше? Самый распространенный способ - лексикографический порядок, то есть по алфавиту.</p>
9 <p>База данных знает, как сравнивать не только числа, но и строки, и даты. Сортировка по датам - крайне частая операция, выглядит она идентично любой другой сортировке:</p>
9 <p>База данных знает, как сравнивать не только числа, но и строки, и даты. Сортировка по датам - крайне частая операция, выглядит она идентично любой другой сортировке:</p>
10 <p>Здесь мы отсортировали пользователей по дате создания в прямом порядке, то есть по возрастанию.</p>
10 <p>Здесь мы отсортировали пользователей по дате создания в прямом порядке, то есть по возрастанию.</p>
11 <h2>Управление порядком сортировки</h2>
11 <h2>Управление порядком сортировки</h2>
12 <p>Сортировать данные можно разными способами:</p>
12 <p>Сортировать данные можно разными способами:</p>
13 <ul><li>В прямом порядке</li>
13 <ul><li>В прямом порядке</li>
14 <li>В обратном порядке</li>
14 <li>В обратном порядке</li>
15 <li>По нескольким полям</li>
15 <li>По нескольким полям</li>
16 </ul><h3>Прямой порядок сортировки</h3>
16 </ul><h3>Прямой порядок сортировки</h3>
17 <p>Если ничего дополнительно не указывать, то ORDER BY сортирует в<strong>прямом порядке</strong>- от меньшего к большему. Запрос выше - это сокращенная версия полного запроса с сортировкой. Полный запрос включает в себя ASC, который подставляется автоматически, если ничего не указано:</p>
17 <p>Если ничего дополнительно не указывать, то ORDER BY сортирует в<strong>прямом порядке</strong>- от меньшего к большему. Запрос выше - это сокращенная версия полного запроса с сортировкой. Полный запрос включает в себя ASC, который подставляется автоматически, если ничего не указано:</p>
18 <h3>Обратный порядок сортировки</h3>
18 <h3>Обратный порядок сортировки</h3>
19 <p>Чтобы выполнить сортировку в обратном порядке, указывается DESC:</p>
19 <p>Чтобы выполнить сортировку в обратном порядке, указывается DESC:</p>
20 <h3>Сортировка по нескольким полям</h3>
20 <h3>Сортировка по нескольким полям</h3>
21 <p>Иногда нужно сортировать данные сразу по нескольким полям. Этого можно достичь, если перечислить поля через запятую:</p>
21 <p>Иногда нужно сортировать данные сразу по нескольким полям. Этого можно достичь, если перечислить поля через запятую:</p>
22 <p>Порядок сортировки в таком случае задается для каждого поля индивидуально:</p>
22 <p>Порядок сортировки в таком случае задается для каждого поля индивидуально:</p>
23 <p>В этой выборке сначала выполняется сортировка по имени в прямом порядке. Затем внутри групп с одинаковым именем данные сортируются по<em>created_at</em>в обратном порядке.</p>
23 <p>В этой выборке сначала выполняется сортировка по имени в прямом порядке. Затем внутри групп с одинаковым именем данные сортируются по<em>created_at</em>в обратном порядке.</p>
24 <p>Еще у сортировки есть один тонкий момент, который связан с полями NULL.</p>
24 <p>Еще у сортировки есть один тонкий момент, который связан с полями NULL.</p>
25 <h2>Сортировка NULL-значений</h2>
25 <h2>Сортировка NULL-значений</h2>
26 <p>Если поле содержит NULL, и ничего не указано дополнительно, то считается, что NULL больше любого значения. Получается, что при прямой сортировке они окажутся в конце выборки, а при обратной - в начале. Этим поведением можно управлять с помощью фразы NULLS FIRST:</p>
26 <p>Если поле содержит NULL, и ничего не указано дополнительно, то считается, что NULL больше любого значения. Получается, что при прямой сортировке они окажутся в конце выборки, а при обратной - в начале. Этим поведением можно управлять с помощью фразы NULLS FIRST:</p>
27 <p>и NULLS LAST:</p>
27 <p>и NULLS LAST:</p>
28 <h2>Выводы</h2>
28 <h2>Выводы</h2>
29 <p>В этом уроке мы узнали, что данные в выборке можно сортировать в определенном порядке с помощью запроса ORDER. Он позволяет сортировать данные от меньшего к большему, в обратном порядке и сразу по нескольким полям. Также с его помощью можно управлять сортировкой NULL-значений.</p>
29 <p>В этом уроке мы узнали, что данные в выборке можно сортировать в определенном порядке с помощью запроса ORDER. Он позволяет сортировать данные от меньшего к большему, в обратном порядке и сразу по нескольким полям. Также с его помощью можно управлять сортировкой NULL-значений.</p>