select 排序问题

wenyongjie 2013-06-22 05:49:49
一张表 table
结构如下 :

编号 上级编号 排序 名称
1 0 1 aaa
2 0 2 bbb
3 1 1 aaa.1
4 1 2 aaa.2
5 2 1 bbb.1
6 2 2 bbb.2
7 1 3 aaa.3
...
经过排序后,变为

编号 上级编号 排序 名称
1 0 1 aaa
3 1 1 aaa.1
4 1 2 aaa.2
7 1 3 aaa.3
2 0 2 bbb
5 2 1 bbb.1
6 2 2 bbb.2
...

说明
表的树结点的上级编号为0 “排序”:如果是同级,就是1234排下来,比如说 查询上级编号为0的排序
select 名称 from tb where 上级编号 = 0 order by 排序


...全文
128 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
想飞的菜鸟 2013-06-27
  • 打赏
  • 举报
回复
如是二级的编号是多位数,可以使用FORMAT解决,总之,要根据实际写语句,通用未必是最好。
想飞的菜鸟 2013-06-27
  • 打赏
  • 举报
回复
利用数值文本的排序就可以了,但最好说明你实际中存在多少个分级,要按你的实际来写语句(下面语句是针对你例子是二级分类的):
SELECT * FROM TT ORDER BY  iif(上级编号=0,排序&上级编号,上级编号&排序)
wenyongjie 2013-06-25
  • 打赏
  • 举报
回复
看来只能这样子了,居然没能解决,还是要谢谢
wwwwb 2013-06-25
  • 打赏
  • 举报
回复
递归调用VBA程序,生成编号 OR 建议生成如101.1 101.1.1之类的编号,再排序
wenyongjie 2013-06-25
  • 打赏
  • 举报
回复
名称不是固定的
wwwwb 2013-06-25
  • 打赏
  • 举报
回复
如果名称是固定的 order by left(名称,3),if(instr(名称,'.')=0,0,val(mid(名称,instr(名称,'.')+1)))
wenyongjie 2013-06-25
  • 打赏
  • 举报
回复
我的意思是这张表,按上级编号来排序,然后把上级编号对应的下级记录显示出来,说得不太明白,最终实现的就是 其中上级编号对应的是编号 比如说aaa.1 这条记录的上级编号是1 哪么它就是属于编号为1的这条记录的下级 编号 上级编号 排序 名称 1 0 1 aaa 3 1 1 aaa.1 4 1 2 aaa.2 7 1 3 aaa.3 2 0 2 bbb 5 2 1 bbb.1 6 2 2 bbb.2 这样的结果
想飞的菜鸟 2013-06-23
  • 打赏
  • 举报
回复
楼主的描述看不明,只好从效果中反推语句:
SELECT * FROM T ORDER BY 名称,(上级编号=0)

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧