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

d_orr

Member
Joined
Apr 15, 2004
Messages
26
Reaction score
0
Age
47
дано из базы MySQL сделать выборку при помощи PHP по принципу -- последние новости на главную страницу. Но что-то туплю со страшной силой, не пойму как мне выбрать, скажем, последние 10 записей в порядке возрастания давности.

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

jonjonson

Member
Joined
Mar 4, 2004
Messages
145
Reaction score
28
Age
52
Не вижу примеров кода, по которым можно было бы давать совет.
 

Mirabo

Member
Joined
Aug 9, 2004
Messages
336
Reaction score
113
Age
56
Да, брат, действительно, что-то ты "тупишь".
Вот смотри, строки из спецификации по 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

Member
Joined
Apr 15, 2004
Messages
26
Reaction score
0
Age
47
Mirabo
Спасибо. Я за ночь придумал как сделать через MAX(), но твой вариант намного элегантнее. Я просто не там искал решение, а оно было под самым носом :(
 

Rodion

Member
Joined
Mar 15, 2004
Messages
38
Reaction score
1
По мне проще всего сделать дату или автоинкримент и использовать ORDER BY field_name ASC/DESC в зависимости в каком порядке надо
 
Top