Задавайте вопросы, мы ответим
Вы не зашли.
Не могу составить запрос для 6-го мускула. Нужно вывести первые/последние n строчек. Для пятого это был бы
SELECT * FROM mytable DESC LIMIT n
Проблема в том что DESC без GROUP BY работать не хочет, а в моем случае он не применим. Как быть?
Отредактированно rgbeast (10.11.2008 16:35:01)
Неактивен
DESC это сортировка?
Неактивен
DESC - сортировка по убаванию. Что такое id?
Неактивен
id - колонка таблицы mytable (в данном контексте уникальный идентификатор - primary key). Ведь сортировку необходимо проводить по какому-то полю.
Неактивен
SELECT * FROM mytable ORDER BY id DESC LIMIT n - не работатет. Ошибка ERROR 1054 (42S22): Unknown column 'id' in 'order clause'
Неактивен
Вместо id надо указать название колонки, по которой сортируете. При чем здесь 6ая версия?
Неактивен
rgbeast написал:
Вместо id надо указать название колонки, по которой сортируете. При чем здесь 6ая версия?
1) если я указываю название колонки, то он как-то сортирует. Как - не понятно. Мне нужно последние 3 строки. Запрос выдает 3, 10, 18 строки.
2) в более старых версиях DESC можно было использовать без ORDER BY, что позволяло избежать любых сортировок.
Неактивен
Таблица в хранилище никак не отсортирована, поэтому без сортировки будет всегда непредсказуемый результат. Даже если в старых версиях это работало, то это явное нарушение стандарта ANSI SQL
Неактивен
rgbeast написал:
Таблица в хранилище никак не отсортирована, поэтому без сортировки будет всегда непредсказуемый результат. Даже если в старых версиях это работало, то это явное нарушение стандарта ANSI SQL
Как же выйти из этой ситуации?
Неактивен
bRUtality написал:
Как же выйти из этой ситуации?
Указывать явно колонку по которой сортируете.
bRUtality написал:
1) если я указываю название колонки, то он как-то сортирует. Как - не понятно. Мне нужно последние 3 строки. Запрос выдает 3, 10, 18 строки.
Сортировка происходит по значению указанного поля. Скорее всего ошибка в проектировании таблицы. Чтобы получить последние 3 строки (подразумевается последние добавленные в таблицу?) нужно иметь уникальный автоинкрементный ключ или поле содержащее время добавления; чтобы получить последние редактируемые строки, нужно поле, которое содержит дату редактирования, и т.д.
Можете привести структуру таблицы (show create table mytable;), кусок данных, запрос, желаемый результат, получаемый результат.
Неактивен
Думаю поле с временем добавления решит проблему. Спасибо за совет.
Моя таблица из 2 полей - INT и TINYBLOB, интересует только второе поле.
Неактивен
Чтобы выводить n последних добавленных записей всё же лучше использовать автоинкрементный ключ, а не дополнительное поле с временем добавления. Меньше занимает места и что существенней быстрее будет работать.
Неактивен
Спасибо за Ваши советы. Так бы и сделал. Но дело в том, что эту БД мне не позволят корректировать. Так что придется дальше репу чесать(((
Неактивен