Mysql 按问题排序
我有下表:Mysql 按问题排序,mysql,group-by,sql-order-by,Mysql,Group By,Sql Order By,我有下表: id title parent_forum depth 1 'Forum1' 0 0 2 'Forum2' 0 0 3 'Forum3' 0 0 4 'Forum1 subforum' 1 0 5 'Forum2 su
id title parent_forum depth
1 'Forum1' 0 0
2 'Forum2' 0 0
3 'Forum3' 0 0
4 'Forum1 subforum' 1 0
5 'Forum2 subForum' 2 0
6 'Forum3 subForum' 3 0
我想做的是对行进行排序,以便所有子论坛都按其父论坛分组。因此,作为一个例子,我希望输出的顺序如下:
id title parent_forum depth
1 'Forum1' 0 0
4 'Forum1 subforum' 1 0
2 'Forum2' 0 0
5 'Forum2 subForum' 2 0
7 'Forum2 subForum2' 2 0
3 'Forum3' 0 0
6 'Forum3 subForum' 3 0
(用于更好理解的空间)
一定有一种方法可以让你只需按订单和分组?如果没有,谁能提出一个好的问题来帮助我
编辑:还是我的数据库结构太糟糕了(我还没有全部展示,但你能看到的东西是垃圾吗?)
非常感谢
詹姆斯我认为这很难奏效:
ORDER BY IF(parent_forum = 0,id,parent_forum), parent_forum
忘了包括你寻找子论坛的顺序吗?子论坛的id值是否可以小于其父论坛?可能,但不太可能-论坛和子论坛将通过表单添加,因此管理员可以创建所有顶级论坛,然后再创建子论坛,所以是的。谢谢你的意见,但是Eric Petroleje用一种非常简单的方式解决了这个问题(如下):)这很有魅力-非常感谢!这么简单的回答。我本来打算在一个循环中使用多个查询,但您刚刚节省了我的开销。这不需要花太多时间,但我需要事情尽可能快。@JamWaffles-如果你可以有子论坛(超过两个级别),这可能不起作用-我无法想象ORDER BY在我脑海中的表现,因此,如果您的系统中真的可以这样做,您需要对其进行测试。此查询仅用于顶级登录页。第二级以下的论坛(如,我的OP中未涉及的论坛)将在单独的页面上,我将使用稍微不同的查询,并考虑所选子论坛的深度。我可能很快会带着另一条线索回来寻求更多帮助!:P