色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql寫遞歸查詢數據結構

林玟書2年前8瀏覽0評論

遞歸查詢是在程序中常常使用的一種查詢方式,MySQL也提供了相關的語法。遞歸查詢是指在查詢過程中,根據前一次查詢的結果,再次進行查詢,直到查詢滿足某個條件為止。

# 創建表格
CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
# 插入數據
INSERT INTO `category` (`id`, `name`, `parent_id`) VALUES
(1, '電子產品', NULL),
(2, '手機', 1),
(3, '電視', 1),
(4, '華為', 2),
(5, '蘋果', 2),
(6, '小米', 2),
(7, '索尼', 3),
(8, '三星', 3),
(9, '電腦', 1),
(10, '聯想', 9),
(11, '華碩', 9),
(12, '戴爾', 9);
# 查詢所有子節點(遞歸查詢)
WITH RECURSIVE cte AS(
SELECT id, name, parent_id
FROM category
WHERE id = 1
UNION ALL
SELECT c.id, c.name, c.parent_id
FROM category c
INNER JOIN cte ON c.parent_id = cte.id
)
SELECT *
FROM cte;

以上代碼通過創建了一個category表格,并插入了相關數據,然后使用CTE(WITH RECURSIVE)進行遞歸查詢。其中,使用UNION ALL連接兩個SELECT語句,第一次查詢時查詢id為1的節點,第二次查詢則通過JOIN連接所找到的父節點進行查詢。

這種遞歸查詢方式,可以查詢到所有的子節點,而且不僅次那個查詢直接子節點,還可查詢到所有子孫節點。