Select 所有 MySQL 行并随机重新插入

Select all MySQL rows and re insert randomly

所以我的数据库中有一个 table,其中有大约 1000 行。

现在我不想按照它们插入 table 的相同顺序显示这些记录。

我希望 table 中的所有行以某种方式随机排列。例如:如果我有 10 条记录 1 2 3 4 5 6 7 8 9 10,我希望它像 8 2 4 6 3 1 7 9 10 5.

可以使用rand()方法,但是对于大数据效率不高。我可以在 PHP 中获取数据并随机播放,但我不想使用它,因为那样我每次获取数据时都必须随机播放它。

所以基本上我不想随机播放和获取数据,而是随机播放 table 本身的所有行。

只需在 table 中打乱我的行一次对我来说就足够了。

您创建第二个 table,复制原始结构,然后将所有记录转储到其中。重命名 tables 就大功告成了。值得在新的 table 上重建任何索引,您可能会遇到一些障碍,因为 mySql 对重新使用旧名称很挑剔。

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