Выберите все строки MySQL и вставьте случайно

Итак, у меня есть таблица в моей базе данных, которая содержит около 1000 строк.

Теперь я не хочу отображать эти записи в том же порядке, в котором они вставлены в таблицу.

Я хочу, чтобы все строки в таблице были как-то случайно перемешаны. Пример: если у меня есть 10 записей в заказе 1 2 3 4 5 6 7 8 9 10Я хочу это как 8 2 4 6 3 1 7 9 10 5,

rand() метод может быть использован, но он не эффективен для больших данных. Я могу получить данные и перемешать в PHP, но я не хочу их использовать, потому что тогда мне придется перетасовывать их каждый раз, когда я получаю данные.

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

Одного раза перетасовывать мои строки в таблице для меня более чем достаточно.

0

Решение

Вы создаете вторую таблицу, дублируете исходную структуру, а затем помещаете в нее все записи. Переименуйте таблицы, и все готово. Стоит перестроить любые индексы в новой таблице, и вы можете столкнуться с некоторыми трудностями, когда mySql возится с повторным использованием старых имен.

INSERT INTO <copy of source table>
SELECT *
FROM <source table>
ORDER BY RAND()
0

Другие решения

Других решений пока нет …