TOC

This article has been localized into Russian by the community.

PHP и MySQL:

MySQL и раздел ORDER BY

В предыдущем параграфе мы использовали раздел WHERE запроса SQL, чтобы определить, какие строки мы хотели выбрать (SELECT). В этом параграфе мы рассмотрим сортировку результата, чтобы получить данные в определенном порядке. В MySQL, как и в большинстве диалектов SQL, ключевое слово для сортировки данных - это ORDER BY (упорядочить по). Давайте начнем прямо с примера:

SELECT name, country FROM test_users ORDER BY name

За ORDER BY следует столбец, по которому мы хотим отсортировать данные. В этом примере, мы получаем пользователей, отсортированных по их именам по алфавиту. По умолчанию порядок сортировки от малых значений к большим, либо, в случае текстовых строк, по алфавиту (A-Z, А-Я). Это сортировка по возрастанию (ascending order). Другими словами, предыдущий пример можно переписать так:

SELECT name, country FROM test_users ORDER BY name ASC

Но, поскольку это порядок по умолчанию, писать так необязательно. Если вы хотите упорядочить значения в убывающем (descending) порядке - от больших к малым или от Z до A (от Я до А) - используйте ключевое слово DESC:

SELECT name, country FROM test_users ORDER BY name DESC

В некоторых случаях сортировать требуется сразу по нескольким столбцам. Например, сначала по стране, а потом по имени. Синтаксис в целом аналогичен, просто нужно записать имена столбцов через запятую, как здесь:

SELECT name, country FROM test_users ORDER BY country, name

В этом случае пользователи сначала будут отсортированы по названию страны, а потом люди из одной страны будут упорядочены по своим именам. Вы можете даже использовать разные направления сортировки для каждого столбца следующим образом:

SELECT name, country FROM test_users ORDER BY country ASC, name DESC

Чтобы протестировать все предыдущие примеры, вы можете использовать тестовый код, который мы написали в предыдущем параграфе. Просто поместите один из запросов внутрь функции mysql_query() и запустите код:

mysql_connect("localhost", "username", "password");
mysql_select_db("my_database");

$query = mysql_query("Insert your SQL query here");
while($row = mysql_fetch_array($query))
    echo $row["name"] . " is from " . $row["country"] . "<br />";

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!