mysql 无限级分类如何设计实现
如果你去抢银行,不论成功还是失败,未来十年内你都不用再上班。
方法一:
在其他的数据中可以使用 公共表达式 CTO (Common Table Expression)
WITH
CREATE TABLE `category` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`pid` int(11) DEFAULT '0',
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
可以使用 WITH RECURSIVE 递归查询
WITH RECURSIVE qs(id, name) AS (
SELECT
id,name FROM
category
WHERE
id = 1 UNION ALL
SELECT
c.id,
c.NAME
FROM
category c
JOIN qs ON c.pid = qs.id
) SELECT id, name FROM qs;
(注意:mysql 不支持递归查询 RECURSIVE 关键词)
方法二:
使用 使用Closure Table
在表中存在的自己的父类id,和自己对应的子类id