На данный вопрос уже ответили:
Есть вот такой вот простой код
$ids = rand(1, 500000);
SELECT * FROM questions WHERE id = '$ids' ORDER BY date DESC limit 40
У меня выводит лишь одну случайную запись. Как мне вывести 40 случайных записей? Знаю про rand() в mysql, но такой запрос выполняется секунд 10-15.
Решил сам:
$maxx=20000; // -- числа будут от 1 до $maxx
$maxn=40; // -- всего $maxn чисел в массиве
$r=""; // эту строку можно удалить
$x=array(); // здесь будет массив наших чисел
$tmp=array(); // временный массив
for ($i=0; $i<$maxn; $i++) {
do {
$a=rand(1,$maxx);
} while(isset($tmp[$a]));
$tmp[$a]=1;
$x[]=$a;
$r.="$a,"; // эту строку можно удалить
}
unset($tmp);
$r=substr($r,0,strlen($r)-1).""; // эту строку можно удалить
$query = "SELECT * FROM questions WHERE id in ($r) ORDER BY date DESC limit 40";
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости