MySQL的無限極分類是指通過在數(shù)據(jù)庫中存儲(chǔ)樹形結(jié)構(gòu)的數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的無限層級(jí)分類。在處理文章、產(chǎn)品分類等需要遞歸查詢的問題時(shí),使用無限極分類可以方便快捷地解決問題。
以下是實(shí)現(xiàn)MySQL無限極分類的SQL代碼:
-- 創(chuàng)建分類表 CREATE TABLE category ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, parent_id INT NOT NULL DEFAULT 0 ); -- 添加分類數(shù)據(jù) INSERT INTO category(name, parent_id) VALUES('電腦', 0); INSERT INTO category(name, parent_id) VALUES('筆記本電腦', 1); INSERT INTO category(name, parent_id) VALUES('臺(tái)式電腦', 1); INSERT INTO category(name, parent_id) VALUES('超極本電腦', 2); INSERT INTO category(name, parent_id) VALUES('游戲本電腦', 2); INSERT INTO category(name, parent_id) VALUES('家庭式臺(tái)式電腦', 3); INSERT INTO category(name, parent_id) VALUES('企業(yè)式臺(tái)式電腦', 3); -- 查詢所有子分類 SELECT t1.id, t1.name, t1.parent_id, CONCAT(t2.name, '/', t1.name) AS full_name FROM category AS t1 LEFT JOIN category AS t2 ON t1.parent_id = t2.id ORDER BY full_name;
通過上述代碼,我們可以創(chuàng)建一個(gè)名為“category”的分類表,并插入一些分類數(shù)據(jù),然后使用LEFT JOIN遞歸查詢出所有子分類數(shù)據(jù)并按照分類全名進(jìn)行排序。結(jié)果如下:
+----+------------------+-----------+--------------------------+ | id | name | parent_id | full_name | +----+------------------+-----------+--------------------------+ | 1 | 電腦 | 0 | 電腦 | | 2 | 筆記本電腦 | 1 | 電腦/筆記本電腦 | | 3 | 臺(tái)式電腦 | 1 | 電腦/臺(tái)式電腦 | | 5 | 超極本電腦 | 2 | 電腦/筆記本電腦/超極本電腦 | | 6 | 游戲本電腦 | 2 | 電腦/筆記本電腦/游戲本電腦 | | 4 | 家庭式臺(tái)式電腦 | 3 | 電腦/臺(tái)式電腦/家庭式臺(tái)式電腦 | | 7 | 企業(yè)式臺(tái)式電腦 | 3 | 電腦/臺(tái)式電腦/企業(yè)式臺(tái)式電腦 | +----+------------------+-----------+--------------------------+
如上所示,我們成功地將分類數(shù)據(jù)按照無限極分類存儲(chǔ),并通過SQL代碼遞歸查詢出了所有子分類數(shù)據(jù)。