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

 

posted @ 2022-04-14 08:54  方达达  阅读(15)  评论(0编辑  收藏  举报