|
|
|
| Подскажите, как можно вывести изи базы 5 записей, причём:
Первые две должны быть выведены по дате (desc), а 3,4,5 - рандомные (rand).
Можно, конечно, сделать вывод за два раза, типа:
$res=mysql_query("select * from mes order by `date` DESC LIMIT 2");
$res2=mysql_query("select * from mes order by RAND() LIMIT2,3");
|
но, уверен, что можно сделать и один универсальный запрос. Вопрос только как? | |
|
|
|
|
|
|
|
для: Владимир22
(28.06.2007 в 18:57)
| | - | |
|
|
|
|
|
|
|
для: Unkind
(28.06.2007 в 19:47)
| | Unkind, спасибо за исчерпывающий ответ :) | |
|
|
|
|
|
|
|
для: Владимир22
(28.06.2007 в 18:57)
| | Одним не получится, при использовании оператора UNION - одна из конструкций ORDER BY неизбежно будет игнорироваться. | |
|
|
|
|
|
|
|
для: cheops
(29.06.2007 в 10:31)
| | Не получится, но я полагаю, несколько по другой причине.
И ORDER BY и LIMIT применяются не к результату отдельных SELECTов, а к результату всего SQL-запроса. | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2007 в 12:31)
| | Да, все дело в LIMIT. Его можно ставить только в конце запроса, так что перед UNION не воткнешь... | |
|
|
|
|
|
|
|
для: Trianon
(29.06.2007 в 12:31)
| | Ровно это и имел в виду - будут учитываться ORDER BY и LIMIT только последнего запроса - все предыдущие конструкции от других запросов - будут игнорироваться. | |
|
|
|
|
|
|
|
для: cheops
(29.06.2007 в 15:36)
| | Не то что игнорироваться. Такой запрос парсер MySQL не пропустит. | |
|
|
|
|
|
|
|
для: Unkind
(29.06.2007 в 15:42)
| | Раньше вроде обе конструкции пропускал, сейчас только LIMIT пропускается (с игнорированием). Помню, что-то там точно должно допускаться в использовании, но игнорироваться. | |
|
|
|