我有一個用于構建選單的專案的 MySQL 表 (menu_items)。請參閱下面的資料。每個選單項要么是父項,要么是子項。“parent_id”為 0 的專案是父項。'parent_id' > 0 的專案是屬于其 'id' 對應于 'parent_id' 資料的專案的子項。
有關架構和測驗資料,請參見此處的 SQLFiddle:http ://sqlfiddle.com/#!9/8ec6bc/1
我正在嘗試創建一個查詢,該查詢為我提供了所有 21 個選單項,以及父選單項的標題(如果存在)。如果專案本身是父項,則父選單標題應為 null。
我已經嘗試了幾種不同的自我連接,如下所示,但無法取回我需要的結果。有任何想法嗎?
SELECT mi1.*, mi2.title as parent_title
FROM menu_items mi1
left join menu_items mi2 on mi2.parent_id = mi1.id;
uj5u.com熱心網友回復:
你幾乎擁有它,翻轉加入關系。檢查 child.parent_id 是否與 parent.id 匹配。
select mi1.*, mip.title as parent_title
from menu_items mi
left join menu_items mip on mi.parent_id = mip.id;
示范。
注意:使parent_idnot null 但將那些沒有父母的人設定為幻數 0 是有問題的。我建議parent_id為父母設定為空并將其設定為空。示范。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448896.html
上一篇:如何規范化新列中的列值?
