我想在 MySQL 中创建一个过程,可以将我的所有记录打乱到一个表中。到目前为止,这就是我现在所拥有的。
/*
SHUFFLE A TABLE PROCEDURE
*/
DELIMITER $$
USE `nologinsdb`$$
DROP PROCEDURE IF EXISTS `shuffle_record_table`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `shuffle_record_table`()
BEGIN
DROP TABLE IF EXISTS record_table2;
CREATE TABLE record_table2 LIKE record_table;
INSERT INTO record_table2 SELECT * FROM record_table ORDER BY RAND();
DROP TABLE record_table;
RENAME TABLE record_table2 TO record_table;
END$$
DELIMITER ;
CALL shuffle_record_table();
我有点不明白
SELECT * FROM record_table ORDER BY RAND()
给我随机顺序,但是当我插入 record_table2
表时,它的顺序与 record_table
表相同。
我不明白。
谢谢。
最佳答案
打乱表格中的行是没有意义的。您可以在使用 order by 检索数据时打乱它们。
用户不关心行的物理顺序。存储引擎按照索引的顺序排列以优化访问。
关于mysql - 使用存储过程在 MySQL 中打乱表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278508/