mariadb 从数据库中选择一组随机行并返回按属性排序的行(MySQL)[重复]

l7wslrjt  于 4个月前  发布在  Mysql
关注(0)|答案(1)|浏览(93)

此问题在此处已有答案

MySQL ORDER BY rand(), name ASC(5个答案)
上个月关门了。
我尝试在MySQL(特别是MariaDB)中执行以下操作:

  • 从数据库中随机选择n行(每次发送查询时应选择不同的行)
  • 按排序顺序返回这些行(例如按uid或名称)

我找到的所有返回一系列随机行(example1example2example 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是一种声明性语言,而不是一种命令式语言,所以这是永远不会工作的,至少不是我尝试的方式。
我没办法了,有办法吗?

cclgggtu

cclgggtu1#

试试这个代码

SELECT *
FROM (
    SELECT *
    FROM table
    ORDER BY RAND()
    LIMIT 10
) AS random
ORDER BY name;

字符串

相关问题