выборка записей из MySQL

d_orr

Турист
Credits
0
дано из базы MySQL сделать выборку при помощи PHP по принципу -- последние новости на главную страницу. Но что-то туплю со страшной силой, не пойму как мне выбрать, скажем, последние 10 записей в порядке возрастания давности.

По дате нашел как делать, это не проблема, а вот как по автоинкрементному PRIMARY KEY выборку сделать не понимаю. Выгребать всю базу, затем разбирать по частям и уже потом выбирать записи -- это проделать можно. Только эффективность у такого способа неважная. Особенно с нарастающей БД. Может есть у кого идея, поделитесь пожалуйста если не жалко
 

Mirabo

Турист
Credits
0
Да, брат, действительно, что-то ты "тупишь".
Вот смотри, строки из спецификации по MySQL (глава 6.4.1 - Синтаксис оператора SELECT):

Оператор SELECT имеет следующую структуру:

SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name]
[FOR UPDATE | LOCK IN SHARE MODE]]

Для тебя важно: ORDER BY - порядок выборки: "Для того чтобы сортировка производилась в обратном порядке, в утверждении ORDER BY к имени заданного столбца, в котором производится сортировка, следует добавить ключевое слово DESC (убывающий). "
и LIMIT - ограничение по выборке: "Выражение LIMIT может использоваться для ограничения количества строк, возвращенных командой".

Полагаю, этого достаточно? Успехов!
 

d_orr

Турист
Credits
0
Mirabo
Спасибо. Я за ночь придумал как сделать через MAX(), но твой вариант намного элегантнее. Я просто не там искал решение, а оно было под самым носом :(
 

RoDioN

Турист
Credits
0
По мне проще всего сделать дату или автоинкримент и использовать ORDER BY field_name ASC/DESC в зависимости в каком порядке надо
 
Сверху