MySQL实现上下级菜单

在MySQL中实现上下级菜单,我们可以使用递归查询,我们需要创建一个表来存储菜单信息,包括菜单ID、菜单名称和父菜单ID,我们可以使用递归查询来获取所有菜单及其子菜单。

MySQL实现上下级菜单
(图片来源网络,侵删)

1、创建菜单表:


CREATE TABLE menu (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  parent_id int(11) DEFAULT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (parent_id) REFERENCES menu (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、插入菜单数据:


INSERT INTO menu (name, parent_id) VALUES
('首页', NULL),
('产品', 1),
('新闻', 1),
('关于我们', 1),
('联系我们', 1),
('产品1', 2),
('产品2', 2),
('产品3', 2),
('新闻1', 3),
('新闻2', 3),
('新闻3', 3),
('关于我们1', 4),
('关于我们2', 4),
('关于我们3', 4),
('联系我们1', 5),
('联系我们2', 5),
('联系我们3', 5);

3、使用递归查询获取所有菜单及其子菜单:

WITH RECURSIVE menu_hierarchy AS (
  SELECT id, name, parent_id
  FROM menu
  WHERE parent_id IS NULL
  UNION ALL
  SELECT m.id, m.name, m.parent_id
  FROM menu m
  INNER JOIN menu_hierarchy mh ON m.parent_id = mh.id
)
SELECT * FROM menu_hierarchy;

这个查询将返回一个包含所有菜单及其子菜单的列表,你可以根据需要修改查询以适应你的应用程序。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/517867.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-04-25 08:36
下一篇 2024-04-25 08:38

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入