2012-05-11 6 views
1

Я пробовал использовать разные, а также возвращал дубликаты.ORDER BY RAND() возвращает дубликаты

$cubes = mysql_query("SELECT distinct * FROM posts ORDER BY RAND() $limit ") or die(mysql_error()); 

Я просто хочу взять таблицу сообщений ... и вернуть ее в случайном порядке без дубликатов.

+2

Пожалуйста, прекратите писать новый код с помощью древних 'mysql_ *' функций. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://news.php.net/php.internals/53799). Вместо этого вы должны узнать о подготовленных операторах и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/mysqli). Если вы хотите узнать, [здесь довольно хороший учебник по PDO] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). –

ответ

4

Выберите только отдельный идентификатор, который вам нужен, например.

SELECT distinct id FROM posts ORDER BY RAND() $limit 

Distinct работает над «всех» строк вы выбираете, так что если вы (к примеру), имеют уникальное поле метки времени, скорее всего, вы будете возвращаться каждый ряд.

0

Вы уверены, что хотите выполнить SELECT DISTINCT * FROM ..., а не только SELECT DISTINCT column_name FROM ...?

Дополнительную информацию можно получить на странице SQL DISTINCT STATEMENT doc.

Смежные вопросы