欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql父子關(guān)系表查詢

MySQL 是一種流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有許多功能,其中之一是父子關(guān)系表查詢。父子關(guān)系表在數(shù)據(jù)庫(kù)設(shè)計(jì)中很常見,因?yàn)樗鼈兛梢杂糜跇?gòu)建層次結(jié)構(gòu)。

CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `category_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `category` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `category` (`id`, `parent_id`, `name`)
VALUES
	(1, NULL, '手機(jī)'),
	(2, 1, '智能手機(jī)'),
	(3, 1, '老人手機(jī)'),
	(4, 2, '華為手機(jī)'),
	(5, 2, '小米手機(jī)'),
	(6, 2, '蘋果手機(jī)');

在這個(gè)示例中,我們建立了一個(gè)叫做 "category" 的表,它包含三個(gè)列: "id", "parent_id" 和 "name"。

"id" 列用于標(biāo)識(shí)每個(gè)分類的唯一性。

"parent_id" 列用于表示該分類的父級(jí)分類。如果該分類是根分類,則該列的值為 NULL。

"name" 列用于存儲(chǔ)分類名稱。

下面是一個(gè)查詢語句,它能夠返回所有分類以及它們的子分類:

SELECT
c1.name AS level1,
c2.name AS level2,
c3.name AS level3
FROM
category AS c1
LEFT JOIN category AS c2 ON c2.parent_id = c1.id
LEFT JOIN category AS c3 ON c3.parent_id = c2.id
WHERE
c1.parent_id IS NULL;

這個(gè)查詢使用LEFT JOIN來連接 "category" 表三次,每個(gè)連接都連接到同一個(gè)表,但是使用不同的表別名。

第一次連接將 "c1" 表連接到 "category" 表,用于獲取根級(jí)分類 "level1"。

第二次連接將 "c2" 表連接到 "category" 表,用于獲取 "level2" 的子類別,這些子類別的父級(jí)分類被設(shè)置為 "level1" 的 "id"。

第三次連接將 "c3" 表連接到 "category" 表,用于獲取 "level3" 的子類別,這些子類別的父級(jí)分類被設(shè)置為 "level2" 的 "id"。

最后,查詢使用WHERE子句限制了只返回根級(jí)別分類。我們通過檢查 "c1.parent_id" 是否為 NULL 來判斷這點(diǎn)。