mySQL - Select 根据值顺序记录,然后在一次查询中随机记录

mySQL - Select records based on value in order, then random records in one query

我希望有一个 mySQL 查询,我可以在其中 select 将所有记录设置为特定值,然后 select 从剩下的记录中提取一些其他记录, 顺序随机。

为了解释,这里有一个例子:(MyTable数据库table)

ID        Name        SomeValue
1         Fred        0
2         Jake        0
3         Jone        1
4         Bill        0
5         Greg        0
6         Thom        2
7         Jane        3
8         Erin        0

所以首先,我想 select 所有 SomeValue 大于 0 的记录。适当的 mySQL 查询是:

SELECT * FROM MyTable WHERE SomeValue > 0 ORDER BY SomeValue DESC

这会 return:

7         Jane        3
6         Thom        2
3         Jone        1

接下来(在同一个查询中),如何从剩余的记录中随机 select 3 个其他记录(限制 6)?

所以记录 returned 的最终结果看起来像这样:

7         Jane        3
6         Thom        2
3         Jone        1
5         Greg        0    // Randomly picked
1         Fred        0    // Randomly picked
8         Erin        0    // Randomly picked

使用union all:

(select t.*
 from t
 where somevalue > 0
) union all
(select t.*
 from t
 where somevalue = 0
 order by rand()
 limit 3
);

如果您想要按 somevalue 排序的值,请添加 order by 一些值作为查询的最后一行。