此问题在此处已有答案:
MySQL ORDER BY rand(), name ASC(5个答案)
上个月关门了。
我尝试在MySQL(特别是MariaDB)中执行以下操作:
- 从数据库中随机选择n行(每次发送查询时应选择不同的行)
- 按排序顺序返回这些行(例如按uid或名称)
我找到的所有返回一系列随机行(example1,example2,example 3)的例子都是先按随机顺序对表进行排序,然后从该表中选择n行,例如:
SELECT * FROM table ORDER BY RAND() LIMIT 10
字符串
用于实现随机顺序的确切关键字因所使用的SQL系统而异(其中一些可能还有几个替代方案),但所有解决方案都使用ORDER BY关键字。
这样做的一个明显的问题是,它也打乱了表的顺序,但是,我需要结果的排序顺序,我不能同时以两种不同的方式对表进行排序。
我试着看看我是否可以通过像这样链接ORDER BY来链接关键字以达到预期的结果:
-- first order by rand, then select 10, then order the result again
SELECT * FROM table ORDER BY RAND() LIMIT 10 ORDER BY name
型
然而,SQL是一种声明性语言,而不是一种命令式语言,所以这是永远不会工作的,至少不是我尝试的方式。
我没办法了,有办法吗?
1条答案
按热度按时间cclgggtu1#
试试这个代码
字符串