MySQL是一款非常強大的關系型數(shù)據(jù)庫管理系統(tǒng),其分組取每組后幾名的功能也非常實用。
如果你想要在一張表中,按照某個字段進行分組,然后再取每組中的前幾名數(shù)據(jù),那么可以使用MySQL的LIMIT和子查詢實現(xiàn)。
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY 分組字段 ORDER BY 排序字段 DESC) as row_num FROM 表名 ) AS t WHERE row_num <= 每組個數(shù)
以上代碼中,首先使用子查詢對表進行分組排序,并添加一個名為row_num的新列。然后在外部查詢中使用LIMIT語句,限制返回的結果數(shù)量。
例如,如果我們想要在一個名為orders的表中,按照顧客ID進行分組,然后每組取前3個訂單:
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) as row_num FROM orders ) AS t WHERE row_num <= 3
通過以上代碼,將得到按照顧客ID分組后,每個組中前3個訂單的記錄。