從MySQL 中的多個類別中選擇前3 行
從表中的每個類別中選擇前3 行可能具有挑戰性。如同最初嘗試中所概述的,一種利用視圖和子查詢的方法可能會傳回不正確的結果。
更有效的方法是採用分析函數,而 MySQL 本身並不支援該函數。但是,可以使用變數來模擬這些函數。操作方法如下:
SELECT x.*
FROM (
SELECT t.*,
CASE
WHEN @category != t.category THEN @rownum := 1
ELSE @rownum := @rownum 1
END AS rank,
@category := t.category AS var_category
FROM TBL_ARTIKUJT t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY t.category
) x
WHERE x.rank 此查詢使用 JOIN 操作初始化變數 @rownum 和 @category。然後,它根據每一行的類別為其分配排名,如果類別發生變化,排名就會遞增。
最後,查詢僅選擇排名為 3 或更低的行。請注意,您可能需要修改 SELECT x.* 子句以僅包含所需的欄位。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3