首頁 > 資料庫 > mysql教程 > 如何檢索資料庫中每組的前 N ​​筆記錄?

如何檢索資料庫中每組的前 N ​​筆記錄?

Mary-Kate Olsen
發布: 2025-01-25 09:46:13
原創
416 人瀏覽過

How to Retrieve the Top N Records for Each Group in a Database?

數據庫分組後獲取每個分組的前N條記錄

您的數據庫數據按分組組織,您需要提取每個分組的前N條記錄。為此,您可以採用以下策略:

UNION ALL 方法:

使用 UNION ALL 運算符組合每個分組的前N條記錄。例如,如果您有兩個分組,並希望為每個分組檢索前兩條記錄,您可以使用:

<code class="language-sql">(
  SELECT *
  FROM mytable
  WHERE `group` = 1
  ORDER BY age DESC
  LIMIT 2
)
UNION ALL
(
  SELECT *
  FROM mytable
  WHERE `group` = 2
  ORDER BY age DESC
  LIMIT 2
)</code>
登入後複製

行號方法:

使用以下查詢為每條記錄生成行號:

<code class="language-sql">SELECT person, `group`, age,
      (@num:=IF(@group = `group`, @num +1, IF(@group := `group`, 1, 1))) row_number
FROM test t
CROSS JOIN (SELECT @num:=0, @group:=NULL) c
ORDER BY `Group`, Age DESC, person</code>
登入後複製

此查詢為其分組中的每條記錄分配一個行號。然後,您可以過濾結果以僅檢索行號小於或等於 N 的記錄:

<code class="language-sql">SELECT person, `group`, age
FROM
(
   ... (上述查询) ...
) AS x
WHERE x.row_number <= N</code>
登入後複製

其他方法:

文中提到的 xaprb 文章提供了實現此結果的其他方法,包括:

  • 使用子查詢或相關子查詢
  • 使用存儲過程
  • 使用窗口函數(對於支持的數據庫)

最佳方法取決於您的特定數據庫系統和性能要求。

以上是如何檢索資料庫中每組的前 N ​​筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板