在 MySQL 中,查詢所有父節(jié)點是一個很常見的任務(wù),可以通過以下步驟完成。
首先,我們需要一個包含父子節(jié)點數(shù)據(jù)的表:
CREATE TABLE `tree` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `tree_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `tree` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
接下來,我們可以編寫一條 MySQL 查詢語句來檢索所有父節(jié)點:
SELECT
t1.id,
t1.name,
t1.parent_id,
t2.name AS parent_name
FROM tree t1
LEFT JOIN tree t2 ON t1.parent_id = t2.id
WHERE t1.parent_id IS NOT NULL
ORDER BY t1.id ASC;
上述查詢語句中,我們使用了一個自連接(self join),即將同一個表結(jié)構(gòu)連接在一起。我們?yōu)?code>tree表定義了兩個別名(t1 和 t2),并使用了LEFT JOIN
子句將它們連接起來。在 WHERE 子句中,我們過濾出所有具有父節(jié)點的記錄。最后,我們使用 ORDER BY 子句以升序排列記錄。
通過以上步驟,我們就能夠輕松地查詢出所有父節(jié)點。