我希望有一个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
答案 0 :(得分:1)
使用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作为查询的最后一行。