[英]mySQL - Select records based on value in order, then random records in one query
我正在尋找一個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
使用union all
:
(select t.*
from t
where somevalue > 0
) union all
(select t.*
from t
where somevalue = 0
order by rand()
limit 3
);
如果您希望按somevalue
排序的值將按somevalue
order by
作為查詢的最后一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.