MySQL按類別查詢前三名是一個非常常見的問題,在很多業務場景中都需要這樣的需求。下面就演示一下如何使用MySQL實現按類別查詢前三名的功能。
SELECT category, name, score
FROM (
SELECT *,
@rank := IF(@prev_category = category, @rank + 1, 1) AS rank,
@prev_category := category
FROM scores
ORDER BY category, score DESC
) ranked
WHERE rank <= 3;
上述SQL查詢語句中,使用了MySQL的變量功能來實現排名統計的功能。首先我們對score表按category和score進行排序,然后使用變量@rank來計算每個類別中的排名,@prev_category則是用來保證每個類別排名能正確計算。
最后,我們只需要使用WHERE語句篩選出排名前三的記錄即可。這里我們使用了小于等于3的篩選條件。
通過以上的步驟,我們就成功的實現了按類別查詢前三名的效果。