讓我們假設一個users
表所示:如何按每列的不同優先級排列多列?
age | popularity
------------------
16 | 2
23 | 5
17 | 2
16 | 3
... | ...
... | ...
我要選擇較小的年齡和更大的知名度行。但不要選擇那個。
有了:
SELECT *
FROM `users`
ORDER BY `age` ASC, `popularity` DESC
我們將在上面的年輕用戶和用戶使用相同的age
會按人氣相互之間進行排序。
而且具有:
SELECT *
FROM `users`
ORDER BY `popularity` DESC, `age` ASC
我們將在上面最流行的用戶和用戶與age
它們之間的有序相同popularity
。
但我不想選擇一個排序。我想混合起來。
如何根據popularity
和40%基於age
實現60%的分類?
是否有這種排序的通用解決方案?自定義功能是唯一的選擇嗎?
UPDATE:樣品期望的結果
age | popularity
------------------
16 | 8
15 | 2
23 | 5
29 | 10
16 | 3
16 | 2
17 | 2
因此,如果用戶是非常年輕的,她應該會更高,甚至更小的人氣。如果用戶很流行,即使年齡較大,她也應該更高。
最年輕和最受歡迎的應該總是在最上面。最古老和最不受歡迎的應該總是在最底層。
我在尋找一個通用的解決方案,不僅僅是數字,而是日期,字符串等等。
你能顯示樣本結果嗎? –
@JohnWoo示例結果添加並解釋了一下。 –