mysql 自关联的子孙查询,Mysql自连接查询实例详解
本文實例講述了Mysql自連接查詢。分享給大家供大家參考,具體如下:
自連接查詢
假想以下場景:某一電商網站想要對站內產品做層級分類,一個類別下面有若干子類,子類下面也會有別的子類。例如數碼產品這個類別下面有筆記本,臺式機,智能手機等;筆記本,臺式機,智能手機又可以按照品牌分類;品牌又可以按照價格分類,等等。也許這些分類會達到一個很深的層次,呈現一種樹狀的結構。那么這些數據要怎么在數據庫中表示呢?我們可以在數據庫中創建兩個字段來存儲id和類別名稱,使用第三個字段存儲類別的子類或者父類的id,最后通過自連接去查詢想要的結果。
自連接查詢其實等同于連接查詢,需要兩張表,只不過它的左表(父表)和右表(子表)都是自己。做自連接查詢的時候,是自己和自己連接,分別給父表和子表取兩個不同的別名,然后附上連接條件。看下面的例子:
1. 創建數據表:
?
注:cate_name表示分類的名稱,parent_id表示父類的id。
2. 插入數據:
?
查詢結果:
3. 查詢所有分類以及分類的父類:假想有左右兩張表(都是tdb_cates),左表是子表,右表是父表;查詢子表的id,子表的cate_name,父表的cate_name;連接條件是子表的parent_id等于父表的id。
復制代碼 代碼如下:
select s.id, s.cate_name, p.cate_name from tdb_cates s left join tdb_cates p on s.parent_id=p.id;
查詢結果:
4. 查詢所有分類以及分類的子類:還是假想有左右兩張表(都是tdb_cates),左表是子表,右表是父表;查詢子表的id,子表的cate_name,父表的cate_name;連接條件是子表的id等于父表的parent_id。
復制代碼 代碼如下:
select s.id, s.cate_name, p.cate_name from tdb_cates s left join tdb_cates p on p.parent_id=s.id;
查詢結果:
希望本文所述對大家MySQL數據庫計有所幫助。
原文鏈接:https://blog.csdn.net/xiaoyaoyulinger/article/details/54175483
總結
以上是生活随笔為你收集整理的mysql 自关联的子孙查询,Mysql自连接查询实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql real escape,my
- 下一篇: red hat 升级 php 5.6,C