如何在SQL中生成并随机排序数字?求有效替代函数
实现SQL随机排序的有效方案
嘿,你提到的ORDER_ASS确实不是有效的SQL函数,不过别担心,不同数据库系统都有内置的方法来实现随机排序的需求,尤其是你用PHPMyAdmin的话,大概率是搭配MySQL/MariaDB,下面给你整理了靠谱的解决方案:
MySQL/MariaDB(PHPMyAdmin最常用搭配)
直接用RAND()函数配合ORDER BY就能实现结果集的随机排序,比如你想从math_problems表中随机取出所有数学题:
SELECT * FROM math_problems ORDER BY RAND();
如果只需要随机抽取指定数量的题目(比如10道),加上LIMIT就行:
SELECT * FROM math_problems ORDER BY RAND() LIMIT 10;
小提醒:如果你的题目表数据量特别大,ORDER BY RAND()可能会有点性能损耗——因为它要给每一行生成随机值再排序。不过一般数学题数据库的数据量不会特别大,这个方法完全够用。
其他常见数据库的方案(供以后参考)
- PostgreSQL:用
RANDOM()函数SELECT * FROM math_problems ORDER BY RANDOM(); - SQL Server:可以借助
NEWID()函数(通过生成唯一标识符实现随机排序)SELECT * FROM math_problems ORDER BY NEWID(); - SQLite:同样用
RANDOM()函数SELECT * FROM math_problems ORDER BY RANDOM();
另外,如果你的需求是让题目里的数字(比如题干中的数值)随机排序,而不是整个题目记录打乱,那需要针对字段的存储格式做字符串分割、随机重组之类的处理,但从你的描述来看,应该是想让题目记录随机排序,上面的方法就完全能解决你的问题啦。
内容的提问来源于stack exchange,提问作者user9285991
相关产品推荐
相关产品推荐

