簡體   English   中英

MySQL-根據值順序選擇記錄,然后在一個查詢中隨機記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM