我有这个MySql表(默认按id排序):
id subid value
1 0 value 1
2 0 value 2
3 1 sub of 1
4 1 sub of 1
5 2 sub of 2
6 2 sub of 2
7 5 sub of 5
我需要一个返回列表的查询,按id和subid排序,如下所示:
1 0 value 1
3 1 sub of 1
4 1 sub of 1
2 0 value 2
5 2 sub of 2
7 5 sub of 5
6 2 sub of 2
所以,id的subs直接来自id行(在这个例子中,id1有2个subs,它们直接出现在id1的行下.id7有subid 5所以直接出现在id5的行下
潜艇可以无限深
我怎样才能得到这个结果?
谢谢!
答案 0 :(得分:0)
尝试这样的事情:
SELECT ID,SUBID,Value
FROM TableName
ORDER BY RIGHT(Value,CHAR_LENGTH(SUBID)),ID
答案 1 :(得分:0)
感谢您回答人们,回复这样的数据似乎很难
请允许我向您提供有关我的目标的更多信息:
我在Laravel中构建一个项目,并希望按顺序显示数据,因为我使用了jQuery addon jQueryTreetable(http://ludo.cubicphuse.nl/jquery-treetable/),并且在他们的网站上你可以阅读这句话:
请注意,插件期望HTML表格中的行与它们应在树中显示的顺序相同。例如,假设您有三个节点:A,B(节点A的子节点)和C(节点B的子节点)。如果按照以下顺序A - C - B在HTML表中为这些节点创建行,则树将无法正确显示。您必须确保行的顺序为A - B - C.
也许解决方案可以是将数据转换为JSON格式,让javascript改变数据的顺序?
谢谢!
答案 2 :(得分:0)
与此同时,我找到了部分解决方案:
SELECT * FROM table ORDER BY IFNULL(parid, id)
这只是第一级的工作,但是对于额外的级别,我需要通过php函数运行结果来重新排序。
有人可以帮我解决这个问题吗?
此时我的结果是:
ID SUBID VALUE
1 NULL value 1
3 1 sub of 1
4 1 sub of 1
2 NULL value 2
5 2 sub of 2
6 2 sub of 2
7 5 sub of 5
如您所见,记录7必须在记录5之下(因为记录5是记录7的子记录)
有人可以帮我建立这个功能吗?