заранее извиняюсь если проблема банальная, но погуглил и не нашёл никакого решения Дано: таблица Comments с комментариями и временем их добавления Комментарий | Время добавления (comment) (date) --------------------------- comment1 | 02:26:55 comment2 | 02:27:25 comment3 | 02:27:30 comment4 | 02:27:38 comment5 | 02:27:54 comment6 | 02:28:16 comment7 | 02:28:20 comment8 | 02:28:23 comment9 | 02:28:27 commen10 | 02:28:30 commen11 | 02:28:33 commen12 | 02:28:36 commen13 | 02:28:40 Мне необходимо выбрать первые 5 комментариев, не проблема: SELECT * from comments ORDER BY date asc LIMIT 0,5 получаю результат: comment1 comment2 comment3 comment4 comment5 А как сделать так чтобы результаты показывались в обратном порядке ? comment5 comment4 comment3 comment2 comment1
Завести comment_id и что-то типа [sql]ORDER BY date ASC, comment_id DESC[/sql] или просто выводить в обратном порядке
спасибо, но так не работает про вывод в обратном порядке знаю, но хочется средствами mysql это делать
Может: [sql]SELECT * FROM comments WHERE comment_id IN (SELECT comment_id FROM comments ORDER BY comment_id ASC LIMIT 5) ORDER BY comment_id DESC[/sql] Сам не пробовал, но может заработает. :-Р upd: это не работает, вариант ниже — рабочий.
А можно ещё: PHP: <? $res = mysql_query("SELECT @num := COUNT(*) FROM comments"); $num = mysql_result($res, 0); $res = mysql_query("SELECT * FROM comments ORDER BY id DESC LIMIT " . ($num - 5) . ", 5");
[sql]SELECT @id := id FROM comments ORDER BY id ASC LIMIT 4, 1[/sql] [sql]SELECT * FROM comments WHERE id <= @id ORDER BY id DESC[/sql] Во.
А вообще в базе данных можно хоть timestamp, хоть datetime использовать разницы никакой. Только при использовании datetime дамп базы становится более читабельным и при выборке придется использовать UNIX_TIMESTAMP(). Да и вообще, можно просто настроить локаль на MySQL, чтобы она выдавала даты по-русски и красиво.