|
|
|
| нужно вывести несколько случайных строк. Не могу придумать, как бы это сделать чистым SQL. Пока приходит в голову только вариант:
взять идентивикаторы всех строк (SELECT id FROM table), сгнерировать несколько случайных (не повторяющихся) чисел в пределах величины полученного массива (числа не превосходят число элементов массива). Затем получить id из массива с ключем, равным этим случайным числам. А после этого выполнить запросы именно этих id:
SELECT * FROM table WHERE id=$element1 OR...
но тут идут 2 запроса: 1 подготовительный, потом работа ПХП и уже после нее собственно выборка. Можно ли как-то выбрать чистыс SQL? Может есть какие-то рандомы в скуэле? | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.07.2009 в 13:36)
| | В принципе SQL такие задачи решать не обязан.
Но для ширпотреба часто (хотя и не всегда) достаточно костыля от MySQL:
ORDER BY RAND()
LIMIT n | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2009 в 14:07)
| | любопытно, попробую.
Попробовал. В доках по скуэлю говорится не юзать такого, чтоб не грузить сервак, но мне нужно 3 случайных элемента, так что, переживет. Зато код очень лаконичен :)
Пасиба! | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2009 в 14:07)
| | если ты все знаешь, чё тут тусуешся? Я иногда ищу ответы на свои вопросы, паралельно отвечая на то, что удосужусь прочесть. А по моим вопросам наиболее разумные ответы у тебя. Такое ощущение, что ты знаешь все. А раз так, чё тебе тут делать? Почему не тратишь время более экономически целесообразным путем? Или есть еще трудности и для тебя? | |
|
|
|