首頁  >  文章  >  資料庫  >  如何檢索 MySQL 中每個選單的前 5 個選單項目?

如何檢索 MySQL 中每個選單的前 5 個選單項目?

Patricia Arquette
Patricia Arquette原創
2024-11-05 19:44:02808瀏覽

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

使用MySQL 傳回每個類別中前5 個選單項目

在MySQL 資料庫中,您有包含欄位' 的'menus'表menuid' 和'profileName',以及包含字段'itemid'、'name' 和'menuid' 的'menuitems'表。您想要檢索「選單」表中每個選單的前五個選單項目。

您嘗試的一種方法導致錯誤:

SELECT m.profilename, name
FROM menus m 
WHERE (SELECT name
        from menuitems s
        where m.menuid = s.menuid
        limit 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

在此查詢中,副作用變數 @g 和 @r 用於追蹤當前選單名稱 (profileName) 以及其中的位置(行號)選單。 CASE 語句確保每個新選單的位置從 1 開始,並針對後續選單項目遞增。最後的 WHERE 子句篩選位置編號最低的前 5 行。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn