SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.11.2008 11:27:42

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Синтаксис запроса для сортировки с органичением

Не могу составить запрос для 6-го мускула. Нужно вывести первые/последние n строчек. Для пятого это был бы

SELECT * FROM mytable DESC LIMIT n

Проблема в том что DESC без GROUP BY работать не хочет, а в моем случае он не применим. Как быть?

Отредактированно rgbeast (10.11.2008 16:35:01)

Неактивен

 

#2 10.11.2008 14:13:28

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Синтаксис запроса для сортировки с органичением

DESC это сортировка?

SELECT * FROM mytable ORDER BY id DESC LIMIT n

Неактивен

 

#3 10.11.2008 15:03:24

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: Синтаксис запроса для сортировки с органичением

DESC - сортировка по убаванию. Что такое id?

Неактивен

 

#4 10.11.2008 15:07:25

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Синтаксис запроса для сортировки с органичением

id - колонка таблицы mytable (в данном контексте уникальный идентификатор - primary key). Ведь сортировку необходимо проводить по какому-то полю.

Неактивен

 

#5 10.11.2008 16:30:27

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: Синтаксис запроса для сортировки с органичением

SELECT * FROM mytable ORDER BY id DESC LIMIT n - не работатет. Ошибка ERROR 1054 (42S22): Unknown column 'id' in 'order clause'

Неактивен

 

#6 10.11.2008 16:33:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Синтаксис запроса для сортировки с органичением

Вместо id надо указать название колонки, по которой сортируете. При чем здесь 6ая версия?

Неактивен

 

#7 12.11.2008 12:37:00

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: Синтаксис запроса для сортировки с органичением

rgbeast написал:

Вместо id надо указать название колонки, по которой сортируете. При чем здесь 6ая версия?

1) если я указываю название колонки, то он как-то сортирует. Как - не понятно. Мне нужно последние 3 строки. Запрос выдает 3, 10, 18 строки.
2) в более старых версиях DESC можно было использовать без ORDER BY, что позволяло избежать любых сортировок.

Неактивен

 

#8 12.11.2008 20:26:44

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Синтаксис запроса для сортировки с органичением

Таблица в хранилище никак не отсортирована, поэтому без сортировки будет всегда непредсказуемый результат. Даже если в старых версиях это работало, то это явное нарушение стандарта ANSI SQL

Неактивен

 

#9 13.11.2008 15:26:28

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: Синтаксис запроса для сортировки с органичением

rgbeast написал:

Таблица в хранилище никак не отсортирована, поэтому без сортировки будет всегда непредсказуемый результат. Даже если в старых версиях это работало, то это явное нарушение стандарта ANSI SQL

Как же выйти из этой ситуации?

Неактивен

 

#10 13.11.2008 19:27:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Синтаксис запроса для сортировки с органичением

bRUtality написал:

Как же выйти из этой ситуации?

Указывать явно колонку по которой сортируете.


bRUtality написал:

1) если я указываю название колонки, то он как-то сортирует. Как - не понятно. Мне нужно последние 3 строки. Запрос выдает 3, 10, 18 строки.

Сортировка происходит по значению указанного поля. Скорее всего ошибка в проектировании таблицы. Чтобы получить последние 3 строки (подразумевается последние добавленные в таблицу?) нужно иметь уникальный автоинкрементный ключ или поле содержащее время добавления; чтобы получить последние редактируемые строки, нужно поле, которое содержит дату редактирования, и т.д.


Можете привести структуру таблицы (show create table mytable;), кусок данных, запрос, желаемый результат, получаемый результат.

Неактивен

 

#11 14.11.2008 17:36:43

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: Синтаксис запроса для сортировки с органичением

Думаю поле с временем добавления решит проблему. Спасибо за совет.

Моя таблица из 2 полей - INT и TINYBLOB, интересует только второе поле.

Неактивен

 

#12 15.11.2008 17:04:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Синтаксис запроса для сортировки с органичением

Чтобы выводить n последних добавленных записей всё же лучше использовать автоинкрементный ключ, а не дополнительное поле с временем добавления. Меньше занимает места и что существенней быстрее будет работать.

alter table mytable add id int not null auto_increment primary key;
  -- добавляет к таблице целочисленную колонку id, которая является автоинкрементным primary key

Неактивен

 

#13 17.11.2008 10:51:21

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: Синтаксис запроса для сортировки с органичением

Спасибо за Ваши советы. Так бы и сделал. Но дело в том, что эту БД мне не позволят корректировать. Так что придется дальше репу чесать(((

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson