共計 1845 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 Mysql 自連接查詢的示例分析,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
自連接查詢
假想以下場景:某一電商網(wǎng)站想要對站內(nèi)產(chǎn)品做層級分類,一個類別下面有若干子類,子類下面也會有別的子類。例如數(shù)碼產(chǎn)品這個類別下面有筆記本,臺式機,智能手機等;筆記本,臺式機,智能手機又可以按照品牌分類;品牌又可以按照價格分類,等等。也許這些分類會達到一個很深的層次,呈現(xiàn)一種樹狀的結(jié)構(gòu)。那么這些數(shù)據(jù)要怎么在數(shù)據(jù)庫中表示呢?我們可以在數(shù)據(jù)庫中創(chuàng)建兩個字段來存儲 id 和類別名稱,使用第三個字段存儲類別的子類或者父類的 id,最后通過自連接去查詢想要的結(jié)果。
自連接查詢其實等同于連接查詢,需要兩張表,只不過它的左表(父表)和右表(子表)都是自己。做自連接查詢的時候,是自己和自己連接,分別給父表和子表取兩個不同的別名,然后附上連接條件。看下面的例子:
1. 創(chuàng)建數(shù)據(jù)表:
create table tdb_cates(
id smallint primary key auto_increment,
cate_name varchar(20) not null,
parent_id smallint not null
);
注:cate_name 表示分類的名稱,parent_id 表示父類的 id。
2. 插入數(shù)據(jù):
insert into tdb_cates(cate_name, parent_id) values(數(shù)碼產(chǎn)品 , 0);
insert into tdb_cates(cate_name, parent_id) values(家用產(chǎn)品 , 0);
insert into tdb_cates(cate_name, parent_id) values(筆記本 , 1);
insert into tdb_cates(cate_name, parent_id) values(智能手機 , 1);
insert into tdb_cates(cate_name, parent_id) values(電器 , 2);
insert into tdb_cates(cate_name, parent_id) values(家具 , 2);
insert into tdb_cates(cate_name, parent_id) values(冰箱 , 5);
insert into tdb_cates(cate_name, parent_id) values(洗衣機 , 5);
insert into tdb_cates(cate_name, parent_id) values(汽車品牌 , 0);
insert into tdb_cates(cate_name, parent_id) values(別克 , 9);
insert into tdb_cates(cate_name, parent_id) values(寶馬 , 9);
insert into tdb_cates(cate_name, parent_id) values(雪佛蘭 , 9);
insert into tdb_cates(cate_name, parent_id) values(家紡 , 0);
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 自連接查詢的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
向 AI 問一下細節(jié)