mySQL - 按顺序选择基于值的记录,然后在一个查询

时间:2017-03-27 20:37:19

标签: mysql sql random sql-order-by

我希望有一个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

1 个答案:

答案 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作为查询的最后一行。