MySQL是一種關系型數據庫管理系統,它可以執行多種查詢操作,其中包括GROUP BY查詢用于將數據行分組并對每個分組執行計算。如果要讀取分組的前20條記錄,可以使用以下三種方法:
SELECT * FROM ( SELECT * FROM 表名 WHERE 條件 ORDER BY 排序字段 LIMIT m, n ) AS t GROUP BY 分組字段;
以上代碼實現了先按條件篩選、排序并限制結果數量,然后再按分組字段進行分組查詢,從而可以得到每組的前20條記錄。
SELECT * FROM 表名 WHERE 分組字段 IN ( SELECT DISTINCT 分組字段 FROM 表名 ORDER BY 排序字段 LIMIT 20 ) ORDER BY 排序字段;
以上代碼將分組字段通過DISTINCT篩選得到前20個,然后再通過WHERE條件過濾出符合條件的記錄,最后再次排序得到每組的前20條記錄。
SET @row_number:=0; SELECT * FROM ( SELECT *, @row_number:=IF(@group = 分組字段, @row_number+1, 1) AS row_number, @group:=分組字段 AS dummy FROM 表名 WHERE 條件 ORDER BY 分組字段, 排序字段 ) AS t WHERE row_number<= 20;
以上代碼使用了變量和IF函數,在排序時根據前一條記錄的分組字段來決定是否累加計數器,以此實現每個分組的前20條記錄的讀取。