mysql - 使用存储过程在 MySQL 中打乱表

标签 mysql stored-procedures

我想在 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/

相关文章:

c# - ExecuteNonQuery() 执行存储过程时返回-1

MySql - 不支持 BLOB/TEXT 列

sql - 使用字符串变量对表的每一行执行存储过程

具有过滤功能的 AVG 函数中的 MySQL 精度

Java SQL - 未正确读取 UserInput(用户名和密码)

MySQL:返回从 'select tables_names ...' 开始的所有表

C# MySql如何将存储过程与dataGridView绑定(bind)

mysql - SQL查询以查找连接表行的计数作为每行的摘要

php - 如何在 sphinx 组搜索中对属性求和?

sql-server - SQL Server 存储过程无法通过 Codesmith 运行