我有一個表格,結構如下。 該表主要記錄性別= 1的地方。MySQL獲得加權結果
我正在尋找一個解決方案來獲得結果集,其中60%的記錄頂部有性別= 1,40%與性別= 2混合,有序通過人氣desc。 性別= 2的成員數量少得多,這意味着結果集應該只有性別= 1的記錄。
會員表
id | nickname | gender | popularity
1 | jake | 1 | 80
2 | mike | 1 | 88
3 | dave | 1 | 75
4 | jenny | 2 | 85
5 | peter | 1 | 83
6 | nina | 2 | 88
7 | mister | 1 | 77
8 | drake | 1 | 80
結果應該是這樣的,它必須滿足不了確切加權列表。目標是看到兩性的混合結果。
id | nickname | gender | popularity
2 | mike | 1 | 88
5 | peter | 1 | 83
6 | nina | 2 | 88
1 | jake | 1 | 80
8 | drake | 1 | 80
4 | jenny | 2 | 85
7 | mister | 1 | 77
3 | dave | 1 | 75
我到目前爲止的最好成績是(它不照顧有關40:60分):
SET @rank=0;
SET @rank2=0;
SELECT * FROM (
SELECT @rank:[email protected]+1 AS rank, q.* FROM (SELECT * FROM test WHERE gender = 1 ORDER BY popularity DESC) AS q
UNION
SELECT @rank2:[email protected]+1 AS rank, q.* FROM (SELECT * FROM test WHERE gender = 2 ORDER BY popularity DESC) AS q
) AS r ORDER BY rank;
這是一個需求規格說明,而不是一個問題。請提出問題,並分享您的嘗試。 – Shadow
爲了澄清,您要求我們提供一個列表,其中最多40%的條目是「性別= 2」,其餘是「性別= 1」?或者你是否要求我們製作一份僅按照受歡迎程度排序的列表,如果您期望沒有返回「性別= 2」條目,儘管它可能在理論上是可能的? – toonice
@toonice是的我要求提供一個列表,顯示40%的條目,其中性別= 2,其餘爲性別= 1 – nenad007