Mysql中的一级嵌套

Mysql中的一级嵌套,mysql,Mysql,我有一张桌子 +-------------+----------------------+--------------------+ | category_id | name | parent_category_id | +-------------+----------------------+--------------------+ | 1 | Pizzas | NULL | |

我有一张桌子

+-------------+----------------------+--------------------+
| category_id | name                 | parent_category_id |
+-------------+----------------------+--------------------+
|           1 | Pizzas               |               NULL |
|           2 | Cheese Pizzas        |                  1 |
|           3 | Spicy Pizzas         |                  1 |
|           4 | Shakes               |               NULL |
|           5 | Milk Shakes          |                  4 |
我只有单级嵌套,它将是相同的

我希望像这样检索行

Pizza
   Cheese Pizzas
   Spicy Pizzas
Shakes
   Milk Shakes
MySQL中是否有类似于Oracle中的“树”的东西,我确实读过这篇文章

当存在动态嵌套级别时,更改表结构似乎更可行,在我的例子中,整个嵌套级别将为1


有什么建议吗?

您可以使用自连接并执行以下操作:

SELECT   parent.category_id, parent.name AS parent, child.name AS child
FROM     my_table parent JOIN my_table child
      ON parent.parent_category_id IS NULL
     AND child.parent_category_id = parent.category_id
ORDER BY parent.category_id, child.category_id
在电视上看

如果需要,甚至将结果分组:

SELECT   parent.name, GROUP_CONCAT(child.name ORDER BY child.category_id)
FROM     my_table parent JOIN my_table child
      ON parent.parent_category_id IS NULL
     AND child.parent_category_id = parent.category_id
GROUP BY parent.category_id
ORDER BY parent.category_id

请在上查看。

您可以使用自连接并执行以下操作:

SELECT   parent.category_id, parent.name AS parent, child.name AS child
FROM     my_table parent JOIN my_table child
      ON parent.parent_category_id IS NULL
     AND child.parent_category_id = parent.category_id
ORDER BY parent.category_id, child.category_id
在电视上看

如果需要,甚至将结果分组:

SELECT   parent.name, GROUP_CONCAT(child.name ORDER BY child.category_id)
FROM     my_table parent JOIN my_table child
      ON parent.parent_category_id IS NULL
     AND child.parent_category_id = parent.category_id
GROUP BY parent.category_id
ORDER BY parent.category_id

请在上查看。

当前正在使用第一个查询,但需要将其子项放在its下parent@Akash:在您的应用程序中,通过测试父级.category\u id中的更改来实现这一点。这难道不可能通过Mysql中的查询实现吗?@Akash:我不确定我是否理解这个问题。您希望结果集的外观如何?从数据库中检索到的结果集应该有一行,首先包含父级,然后在下一行(带有一些空格)包含其后续子级,如当前使用第一个查询的问题中所示,但需要将其子级放在其下parent@Akash:在应用程序中执行此操作,通过测试
parent.category\u id
中的更改。这不可能通过Mysql中的查询实现吗?@Akash:我不确定我是否理解这个问题。您希望结果集的外观如何?从数据库中检索到的结果集应该有一行,首先包含父级,然后在下一行(带有一些空格)包含其后续子级,如问题中所示