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:我不确定我是否理解这个问题。您希望结果集的外观如何?从数据库中检索到的结果集应该有一行,首先包含父级,然后在下一行(带有一些空格)包含其后续子级,如问题中所示