我希望有一个 mySQL 查询,可以在其中选择设置为特定值的所有记录,然后以随机顺序从剩下的记录中选择许多其他记录。
为了解释,这里有一个示例:(MyTable
数据库表)
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
首先,我想选择 SomeValue
大于 0 的所有记录。相应的 mySQL 查询是:
SELECT * FROM MyTable WHERE SomeValue > 0 ORDER BY SomeValue DESC
这将返回:
7 Jane 3
6 Thom 2
3 Jone 1
接下来(在同一个查询中),如何从剩余的记录中随机选择 3 个其他记录(限制 6 个)?
返回的记录的最终结果如下所示:
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
somevalue 作为查询的最后一行。
关于mySQL - 根据顺序值选择记录,然后在一个查询中随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43056026/