在MySQL中实现上下级菜单,我们可以使用递归查询,我们需要创建一个表来存储菜单信息,包括菜单ID、菜单名称和父菜单ID,我们可以使用递归查询来获取所有菜单及其子菜单。
(图片来源网络,侵删)
1、创建菜单表:
CREATE TABLEmenu
(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
) REFERENCESmenu
(id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、插入菜单数据:
INSERT INTOmenu
(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
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复