Итак, у меня есть таблица в моей базе данных, которая содержит около 1000 строк.
Теперь я не хочу отображать эти записи в том же порядке, в котором они вставлены в таблицу.
Я хочу, чтобы все строки в таблице были как-то случайно перемешаны. Пример: если у меня есть 10 записей в заказе 1 2 3 4 5 6 7 8 9 10
Я хочу это как 8 2 4 6 3 1 7 9 10 5
,
rand()
метод может быть использован, но он не эффективен для больших данных. Я могу получить данные и перемешать в PHP, но я не хочу их использовать, потому что тогда мне придется перетасовывать их каждый раз, когда я получаю данные.
В общем, я не хочу перемешивать и извлекать данные, а перемешивать все строки в самой таблице.
Одного раза перетасовывать мои строки в таблице для меня более чем достаточно.
Вы создаете вторую таблицу, дублируете исходную структуру, а затем помещаете в нее все записи. Переименуйте таблицы, и все готово. Стоит перестроить любые индексы в новой таблице, и вы можете столкнуться с некоторыми трудностями, когда mySql возится с повторным использованием старых имен.
INSERT INTO <copy of source table>
SELECT *
FROM <source table>
ORDER BY RAND()
Других решений пока нет …