Доброго времяни суток. Столкнулся с проблемой, есть запрос: [sql] $sql_result = $db->query("SELECT DISTINCT(users_table.id) AS user_id, Name, Surename, nastroenie, Nick, City, Country, Sex, LastTime, DOB, Default_Photo, friends_table.first, friends_table.second, friends_table.type FROM friends_table, users_table WHERE users_table.id<>'$id' ORDER BY RAND() DESC LIMIT 0, 20;");[/sql] Все бы в нем вообшемто хорошо, НО test__community_users_table.id повторяются в результатах. Задача стояла следующая: 1) Случайная выборка 2) Уникальные (без повторений) Еще замеченны тормоза на базе свыше 100 000 - по всей вероятности RAND хомит. Может кто-нибудь сталкивался? Заранее спасибо за помощь и мысли
Ну я это уже заметил, но проблемма с выборкой остается. Есть ли другой способ "случайного" извлечения по id с автоинкрементом, да еще и не всегда целым - некоторые записи могут быть удалены
Luge [sql]SELECT name FROM random JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM random)) AS id ) AS r2 USING (id);[/sql] У нас с автором разные понятия о совершенстве
oranze123 Если удаленных записей немного относительно общего количества, то вот хороший метод: 1. Берем MAX(id) 2. Программно генерируем набор из N случайных чисел от 1 до MAX 3. Делаем SELECT * FROM table WHERE id IN (набор) 4. Если вернулось N записей - все отлично, иначе возвращаемся к шагу 2
А вот за такую мысль спасибо!!!! Не видел просто никогда в работе таких запросов - чтоже, очевидно настала пора :roll: :wink: