我有一個MySQL查詢,從多個表中選擇數據,然後下令基於如下一些任意標準的結果:MySQL的順序排名爲列
SELECT [columns] FROM (
SELECT *, COUNT(*) as `matches`
FROM [table1]
JOIN [table2] USING (id)
JOIN [table3] USING (id)
WHERE [criteria]
GROUP BY `id`
ORDER BY `matches` DESC
) AS `grouped`
ORDER BY (
(CASE WHEN [1st rank criteria] THEN 3 ELSE 0 END) +
(CASE WHEN [2nd rank criteria] THEN 2 ELSE 0 END) +
(CASE WHEN [3rd tank criteria] THEN 1 ELSE 0 END)
) DESC
LIMIT 100
這工作得很好,但我的問題是:我可以將排名分數顯示爲列?我已經着眼於嘗試使用變量,但我對SQL很陌生,所以這些都超出了我的想象。
對不起,如果這是一個明顯的問題,但非常感謝您的時間和協助。
完美!我沒有意識到CASE可以按照這個順序排列。非常感謝您的及時和有用的回覆! – Superangel