Сортировка данных в MySQL
Для сортировки данных используется выражение ORDER BY `field_name` [ASC | DESC] [, `field_name2` [ASC | DESC]]
Существует 2 направления сортировки данных в SQL-запросе. ASC – по возрастанию и DESC – по убыванию. По-умолчанию данные сортируются по возрастанию.
Пример:
[mysql]mysql> SELECT `id` FROM `table` ORDER BY `id`;
mysql> SELECT `id` FROM `table` ORDER BY `id` ASC;[/mysql]
+----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | +----+
mysql> SELECT `id` FROM `table` ORDER BY `id` DESC;
+----+ | id | +----+ | 5 | | 4 | | 3 | | 2 | | 1 | +----+
Сортировку можно производить по нескольким полям таблицы. Причем, если указано ключевое слово DESC, упорядочивание по убыванию будет произведено по полю, которое ближе всего расположено к ключевому слову DESC.
Пример:
[mysql]mysql> SELECT `id`, `lastname`, `name` FROM `table`;[/mysql]
+----+----------+-----------+ | id | lastname | name | +----+----------+-----------+ | 1 | Иванов | Сергей | | 2 | Алексеев | Владимир | | 3 | Петров | Вячеслав | | 4 | Ампилов | Александр | | 5 | Сидоров | Тимофей | | 6 | Сидоров | Михаил | +----+----------+-----------+
[mysql]mysql> SELECT `id`, `lastname`, `name` FROM `table` ORDER BY `lastname`, `name`;[/mysql]
+----+-----------+-----------+ | id | lastname | name | +----+-----------+-----------+ | 2 | Алексеев | Владимир | | 4 | Ампилов | Александр | | 1 | Иванов | Сергей | | 3 | Петров | Вячеслав | | 6 | Сидоров | Михаил | | 5 | Сидоров | Тимофей | +----+-----------+-----------+
[mysql]mysql> SELECT `id`, `lastname`, `name` FROM `table` ORDER BY `lastname`, `name` DESC;[/mysql]
+----+-----------+-----------+ | id | lastname | name | +----+-----------+-----------+ | 2 | Алексеев | Владимир | | 4 | Ампилов | Александр | | 1 | Иванов | Сергей | | 3 | Петров | Вячеслав | | 5 | Сидоров | Тимофей | | 6 | Сидоров | Михаил | +----+-----------+-----------+
За статью конечно большое спасибо.Но вот вопросто а чего это вы в запросе SELECT `id` FROM `table` ORDER BY `id`; id поместили в кавычки ? Я сначала тоже так запрос формировал и у меня ничего не получилось отсортировать. А когда убрал кавычки то сразу все заработало.
Я все названия слобцов обрамляю ковычками.
По синтаксису MySQL кавычки обязательно, когда пишете что-то на PHP в запросе их нужно опускать за исключением значений…
Пример:
$query = «SELECT id, lastname, name FROM table ORDER BY id DESC» ; // без кавычек при запросе данных
$query = «INSERT INTO table (‘id’, ‘name’, ‘lastname’) VALUES (‘7’, ‘Джон’, ‘СМИТ’)» ; // тут уже с кавычками…
Привычка обрамлять все поля таблицы в обратный апостроф. Значения же в двойную кавычку или апостроф.
Скажите пожалуйста, если есть большая таблица, и строки необходимо сортировать в порядке их номера (есть поле id с автоинкрементом), то каким образом лучше делать вывод этой таблицы? Может необходимо использовать какой то кеш таблицы, потом с каким то интервалом производить сортировку и еделать вывод?
Немного не понял вопроса.
Кавычками обрамлять нужно только в том случае, если поле содержит строковое значение. Если же в поле числовое значение, а поле id как правило с числовым, то кавычками обрамлять не нужно.
Это что касается значений, а названия полей не нужно вообще обрамлять кавычками, или если обрамлять, то косыми кавычками, которые расположены на кнопке со знаком тильды (на обычной клаве под кнопкой Esc).
По сортировке данных всё понятно,а как с извлечением определённой информации.После перебора базы выбрать только имена александр и возраст от 20 до 27.
Владимир, изпользуйте конструкцию where с ключевыми словами LIKE и BETWEEN или операторами сравнения.
Извините, а можно узнать куда надо писать эти запросы
[mysql]mysql> SELECT `id` FROM `table` ORDER BY `id`;
mysql> SELECT `id` FROM `table` ORDER BY `id` ASC;[/mysql]
??
Можно в консоли, можно из Вашего приложения. Для php можно использовать функцию mysql_query
MySQL Error!
————————
The Error returned was:
Table ‘kurska_kmv24.dle_usergroups’ doesn’t exist
Error Number:
1146
SELECT * FROM dle_usergroups ORDER BY id ASC
Как решить?
Необходимо восстановить таблицу dle_usergroups.
Если тема жива, то есть вопрос. Сортировка чисел происходит не корректно, т.е. примерно в таком виде
90
9
88
82
8
740 и т.д.
В чем причина?
gvm, нужна версия БД, запрос и структура таблицы. Тогда смогу подсказать. По хорошему такого быть не должно.
2gvm скорей всего у вас числа хранятся в базе не как числа, а как строки. И когда он сравнивает он по символьно их сравнивает.
У меня при select ip,id from ats выводит так:
10.10.101.224 1
10.10.101.225 2
а при select ip from ats выводит так:
10.10.101.225
10.10.101.224
т.е. ip с пробелом вылезает вперед!!!
Вопрос: есть сортировка по умолчанию что ли?
Как сделать так чтобы не было никакой сортировки?
Как сделать так, чтобы не было никакой сортировки
У меня при select ip,id from ats выводит так:
10.10.101.224 1
/пробел/10.10.101.225 2
а при select ip from ats выводит так:
/пробел/10.10.101.225
10.10.101.224
т.е. ip с пробелом вылезает вперед!!!
Вопрос: есть сортировка по умолчанию что ли?
Как сделать так чтобы не было никакой сортировки?