求救数据库排序问题,SQL应该怎样写?

huanzai1 2015-06-04 11:56:08
现有表名 efhome

字段
id efhomeid title crdate
1 0 你好啊 2013-1-5
2 0 今天好舒服 2014-2-5
3 1 好的卡卡 2013-10-1
4 0 昨晚睡着了 2015-1-5
5 0 装修去哪装 2014-5-5
6 4 宜居吧 2014-1-5
7 4 efhome挺好的 2015-7-5

我查询排序

首先 如果efhomeid如果是0或者是空的话,就按 crdate 日期倒叙
然后 efhomeid 如果大于0 就等于在 id的子ID, 其实就是回复排序,回复排序也要按crdate来排,

排序后结果为:

4 0 昨晚睡着了 2015-1-5

5 0 装修去哪装 2014-5-5
7 4 efhome挺好的 2015-7-5
6 4 宜居吧 2014-1-5

2 0 今天好舒服 2014-2-5

1 0 你好啊 2013-1-5
3 1 好的卡卡 2013-10-1
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅小贱 2015-06-05
  • 打赏
  • 举报
回复
select * from efhome order by efhomeid desc,crdate desc;
zbdzjx 2015-06-04
  • 打赏
  • 举报
回复
引用 3 楼 huanzai1 的回复:
[quote=引用 1 楼 zbdzjx 的回复:] 按你的说法“如果efhomeid如果是0或者是空的话,就按 crdate 日期倒叙”,那应该就是efhomeid是0的4条都排在最前面啊,但你给的结果中,却是前面2条,中间2条。
是啊,我编辑时候写错了,但是没有权限修改帖子。。。[/quote] 那你重新发一下需要的结果。
huanzai1 2015-06-04
  • 打赏
  • 举报
回复
引用 1 楼 zbdzjx 的回复:
按你的说法“如果efhomeid如果是0或者是空的话,就按 crdate 日期倒叙”,那应该就是efhomeid是0的4条都排在最前面啊,但你给的结果中,却是前面2条,中间2条。
是啊,我编辑时候写错了,但是没有权限修改帖子。。。
流浪川 2015-06-04
  • 打赏
  • 举报
回复
实在看不懂~~
zbdzjx 2015-06-04
  • 打赏
  • 举报
回复
按你的说法“如果efhomeid如果是0或者是空的话,就按 crdate 日期倒叙”,那应该就是efhomeid是0的4条都排在最前面啊,但你给的结果中,却是前面2条,中间2条。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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