MySQL二級菜單表 - 基本介紹
MySQL二級菜單表通常用于設(shè)計網(wǎng)站中的多級分類菜單,例如商品分類、新聞分類等。基本上,二級菜單表包含兩個字段:一個是id字段,用于唯一標(biāo)識每個分類,另一個是pid字段,用于記錄每個分類的父分類id。
MySQL二級菜單表 - 數(shù)據(jù)結(jié)構(gòu)
具體的MySQL二級菜單表數(shù)據(jù)結(jié)構(gòu)可以如下:id字段是主鍵,pid字段是外鍵。其中,頂級分類的pid為0。
CREATE TABLE `menu` ( `id` int(11) NOT NULL, `pid` int(11) NOT NULL, `name` varchar(50) NOT NULL, `url` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `pid` (`pid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL二級菜單表 - 數(shù)據(jù)插入
最開始,我們需要往表中插入頂級分類,pid為0。每次插入子分類時需要指定它的父分類id。例如,插入一級分類“電子產(chǎn)品”,代碼如下:
INSERT INTO `menu` (`id`, `pid`, `name`, `url`) VALUES (1, 0, '電子產(chǎn)品', '');
接著,插入其子分類“手機”,代碼如下:
INSERT INTO `menu` (`id`, `pid`, `name`, `url`) VALUES (2, 1, '手機', '/mobile');
MySQL二級菜單表 - 數(shù)據(jù)查詢
為了獲取一個分類的所有子分類,我們需要使用遞歸查詢。下面是一個MySQL遞歸查詢代碼示例:
WITH RECURSIVE cte AS ( SELECT * FROM `menu` WHERE `id` = 1 UNION ALL SELECT m.* FROM `menu` m JOIN cte ON m.`pid` = cte.`id` ) SELECT * FROM cte;
這個代碼將返回所有id為1的分類,以及id為1的分類的所有子分類。