如何從 MySQL 檢索每個類別的前 5 個選單項目?

Patricia Arquette
發布: 2024-11-06 02:17:02
原創
937 人瀏覽過

How to Retrieve the Top 5 Menu Items from Each Category in MySQL?

返回MySQL 中每個類別的前5 個項目

挑戰:
檢索前5 個選單資料庫中每個類別的項目由兩個表格“menus”和“menuitems”組成。

解決方案:

所提供的程式碼旨在顯示前 5 個項目每個選單類別。但是,由於子查詢檢索多行,它會傳回錯誤。為了解決這個問題,可以利用副作用變數來追蹤類別中每一行的位置。

SELECT profilename, name
FROM
(
    SELECT m.profilename, s.name,
        @r:=case when @g=m.profilename then @r+1 else 1 end r,
        @g:=m.profilename
    FROM (select @g:=null,@r:=0) n
    cross join menus m 
    left join menuitems s on m.menuid = s.menuid
) X
WHERE r <= 5
登入後複製

細分:

  1. 外部查詢從子查詢(X) 中選擇名稱(類別)和名稱(選單項目),子查詢(X) 透過副作用變數(@r、@g) 分配行位置(r) 和群組標識符(g) 值。
  2. 子查詢在選單表 (m) 和表格 (n) 之間採用交叉聯接,分別以 @g 和 @r 初始化為 NULL 和 0。
  3. 與 menuitems 表 (s) 的 JOIN 新增了基於選單 ID 的選單項目名稱。
  4. CASE 語句指派行位置值,同一類別的每行遞增 1。如果遇到新類別,它將計數器重設為 1。
  5. WHERE 子句根據行位置值篩選結果,僅包含每個類別前 5 名中的行。

以上是如何從 MySQL 檢索每個類別的前 5 個選單項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!