базовый курс

ГРУППА КУРСА

Сортировка записей

В выборке записи располагаются в том же порядке, в котором они находятся в таблице. Но есть возможность изменить этот порядок и расположить записи по возрастанию или убыванию значиний какого-то поля. Для сортировки записей в MySQL используется конструкция ORDER BY. Запрос получается такой:

SELECT * FROM таблица ORDER BY поле

Чтобы записи шли по убыванию, нужно написать такой запрос:

SELECT * FROM таблица ORDER BY поле DESC

Чтобы посмотреть этот запрос на примере, нужна таблица, в которой есть поле числового типа. id для этого не подходит, потому что значения и так идут по порядку. Я добавил в таблицу users поле dif и поместил во все записи разные числа. Напишем скрипт который создаёт выборку по возрастанию поля dif:

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
4
5
6
7
8
9
10
11
12
$db = mysqli_connect('localhost', 'root', '', 'mybase');
$query = "SELECT * FROM users ORDER BY dif";
$result=mysqli_query($db, $query);
for ($i=0; $i<mysqli_num_rows($result); $i++)
  {
  $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
  print_r($row);
  echo('<br>');
  }
mysqli_close($db);

Можно отсортировать записи не только по числовому полю, но и по любому другому. Например, тексты будут отсортированы в алфавитном порядке.

Указание порядка никак не ограничивает сам запрос. В нём можно указать нужные поля, написать условие выборки или добавить другие параметры запроса.

Конструкция ORDER BY позволяет сделать сортировку по нескольким полям. Происходит сортировка по первому указанному полю, а внутри неё сортировка по второму полю.

4
$query = "SELECT * FROM users ORDER BY city, dif";

В результате данного запроса пользователи в выборке будут объединены по городам. Сначала идут все пользователи из одного города, затем из следующего города и так по всем городам. И для каждого города будет произведена сортировка по полю dif. Можно проводить группировку не только по двум, но и по большему количеству полей.