当前位置: 代码迷 >> Oracle管理 >> 子查询中使用order by报错?该如何处理
  详细解决方案

子查询中使用order by报错?该如何处理

热度:3   发布时间:2016-04-24 05:25:47.0
子查询中使用order by报错?
select t.yjfk_id,t.fid,t.yhid,jlcjr yhxm,t.lxfs,t.jlcjsj,t.bt,t.nr,(select count(0) from epdm_yjfk where fid=t.yjfk_id) hfs 
,(select jlcjsj from EPDM_YJFK where fid=t.yjfk_id and fid!='0' and rownum=1 order by jlcjsj desc) zhhfsjfrom EPDM_YJFK t where t.fid='0' and t.yhid='1003' order by jlcjsj desc

如上是个留言版的查询语句,要查出留言信息、留言的回复数、留言的最后回复时间和回复人。
留言和回复在一个表中,yjfk_id是主键,fid是父id,fid=0代表此留言是留言而不是回复。
如上红色部分报错,提示缺少右括号,红色部分为查询留言的最后回复时间(每条留言可多条回复,取最后回复时间)

------解决方案--------------------
你取最后回复时间错了,不是这样取,按下面的就可以了
SQL code
select t.yjfk_id,       t.fid,       t.yhid,       jlcjr yhxm,       t.lxfs,       t.jlcjsj,       t.bt,       t.nr,       (select count(0) from epdm_yjfk where fid = t.yjfk_id) hfs,       (select max(jlcjsj)          from EPDM_YJFK         where fid = t.yjfk_id           and fid != '0') zhhfsjfrom EPDM_YJFK t where t.fid = '0'   and t.yhid = '1003' order by jlcjsj desc
------解决方案--------------------
探讨

其实我自己已经通过修改表结构解决了,想知道sql如何实现?没人?
  相关解决方案