如何在MySQL中删除带有子级的多级菜单项?

zur4ik

我在MySQL中具有无限级别的菜单结构,其中父元素和子元素与column连接p_id

+----+------+------+----------------+
| id | p_id | sort | name_en        |
+----+------+------+----------------+
|  1 |    0 |    1 | menu-1         |
|  2 |    0 |    2 | menu-2         |
|  3 |    0 |    6 | menu-3         |
|  4 |    2 |    3 | sub-menu-2-1   |
|  5 |    2 |    4 | sub-menu-2-2   |
|  6 |    5 |    5 | sub-menu-2-2-1 |
+----+------+------+----------------|

删除带有子菜单元素的根菜单元素的最佳实践是什么?

我可以使用PHP递归来实现它,但是它将引起一些查询。

因此,我需要找出一个MySQL查询是否有任何可能的方法。

伦尼

既然有了name_en,就不能用那个删除行吗?例如,

DELETE FROM `table` WHERE `id` = 2 OR `name_en` LIKE 'sub-menu-2-%'

新方法:

您可以将外键与约束一起使用。我创建了您的表格并将其称为树列表,

CREATE TABLE  `treelist` (
  `item_id` int(10) unsigned NOT NULL auto_increment,
  `parent_id` int(10) unsigned default NULL,
  `name_en` varchar(40) NOT NULL,
  PRIMARY KEY  (`item_id`),
  KEY `FK_parent_id` (`parent_id`),
  CONSTRAINT `FK_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `treelist` (`item_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后,我添加了一些测试数据,即您在问题中遇到的数据,

INSERT INTO `treelist` (`item_id`, `parent_id`, `name_en`) VALUES (NULL, NULL, 'Menu 1'), (NULL, NULL, 'Menu 2'), (NULL, NULL, 'Menu 3'), (NULL, 2, 'Sub Menu 2-1'), (NULL, 2, 'Sub Menu 2-2'), (NULL, 5, 'Sub Menu 2-2-1');

现在,例如,当您删除一行时

DELETE FROM `treelist` WHERE `item_id` = 2

它将删除所有子代,孙代子代等。然后桌子看起来像

+----+------+----------------+ 
| id | p_id | name_en        |
+----+------+----------------+ 
|  1 | NULL | Menu 1         | 
|  3 | NULL | Menu 3         |
+----+------+----------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Wagtail - 如何从设置菜单中删除子菜单项

来自分类Dev

删除Wine后,如何从Nautilus中删除带有菜单项的打开?

来自分类Dev

删除Wine后,如何从Nautilus中删除带有菜单项的打开?

来自分类Dev

删除Wine后,如何从Nautilus中删除带有菜单项的打开?

来自分类Dev

如何删除菜单项?

来自分类Dev

如何删除菜单项?

来自分类Dev

如何在wxPython中将子菜单项添加到弹出菜单项?

来自分类Dev

如何在菜单项上悬停时显示子菜单项

来自分类Dev

如何在此下拉菜单中显示子菜单项

来自分类Dev

如何循环显示菜单条级别中的所有子菜单项

来自分类Dev

如何在php的父项下显示子菜单项?

来自分类Dev

如何在系统菜单中添加菜单项

来自分类Dev

如何在系统菜单中添加菜单项

来自分类Dev

如何克隆菜单项的子菜单?

来自分类Dev

在MVC中使用剃刀的带有下拉子菜单项的菜单项无法正常使用

来自分类Dev

在MVC中使用剃刀的带有下拉子菜单项的菜单项无法正常运行

来自分类Dev

将滚动条添加到具有子菜单项的菜单项中,而不隐藏子菜单项

来自分类Dev

带有有界子菜单的 WPF 绑定菜单项

来自分类Dev

如何在CMFCMenuBar中右对齐“帮助”菜单项

来自分类Dev

如何在导航栏中居中显示菜单项

来自分类Dev

如何在NavigationView的菜单项中设置ellipsize?

来自分类Dev

如何在GRUB中还原Windows XP菜单项?

来自分类Dev

如何在Qt中包括菜单项的工具提示

来自分类Dev

如何在GRUB中还原Windows XP菜单项?

来自分类Dev

如何在Action Overflow中不显示菜单项?

来自分类Dev

如何在Android中动态添加菜单项

来自分类Dev

如何在odoo中查找菜单项的动作ID?

来自分类Dev

如何在 Android 菜单项行中插入布局?

来自分类Dev

如何在 AWT Menu 中定义菜单项的顺序?

Related 相关文章

  1. 1

    Wagtail - 如何从设置菜单中删除子菜单项

  2. 2

    删除Wine后,如何从Nautilus中删除带有菜单项的打开?

  3. 3

    删除Wine后,如何从Nautilus中删除带有菜单项的打开?

  4. 4

    删除Wine后,如何从Nautilus中删除带有菜单项的打开?

  5. 5

    如何删除菜单项?

  6. 6

    如何删除菜单项?

  7. 7

    如何在wxPython中将子菜单项添加到弹出菜单项?

  8. 8

    如何在菜单项上悬停时显示子菜单项

  9. 9

    如何在此下拉菜单中显示子菜单项

  10. 10

    如何循环显示菜单条级别中的所有子菜单项

  11. 11

    如何在php的父项下显示子菜单项?

  12. 12

    如何在系统菜单中添加菜单项

  13. 13

    如何在系统菜单中添加菜单项

  14. 14

    如何克隆菜单项的子菜单?

  15. 15

    在MVC中使用剃刀的带有下拉子菜单项的菜单项无法正常使用

  16. 16

    在MVC中使用剃刀的带有下拉子菜单项的菜单项无法正常运行

  17. 17

    将滚动条添加到具有子菜单项的菜单项中,而不隐藏子菜单项

  18. 18

    带有有界子菜单的 WPF 绑定菜单项

  19. 19

    如何在CMFCMenuBar中右对齐“帮助”菜单项

  20. 20

    如何在导航栏中居中显示菜单项

  21. 21

    如何在NavigationView的菜单项中设置ellipsize?

  22. 22

    如何在GRUB中还原Windows XP菜单项?

  23. 23

    如何在Qt中包括菜单项的工具提示

  24. 24

    如何在GRUB中还原Windows XP菜单项?

  25. 25

    如何在Action Overflow中不显示菜单项?

  26. 26

    如何在Android中动态添加菜单项

  27. 27

    如何在odoo中查找菜单项的动作ID?

  28. 28

    如何在 Android 菜单项行中插入布局?

  29. 29

    如何在 AWT Menu 中定义菜单项的顺序?

热门标签

归档