论坛首页 Java企业应用论坛

关于order by 排序的问题

浏览 12575 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (15) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-28  
关于在ibatis中的sql语句进行按照某字段进行排序的问题,在使用oracle数据库的时候,没什么问题,在使用db2数据库的时候,报错。
         
SQL0119N  SELECT、HAVING 或 ORDER BY 子句中指定的以 "GROUPID"开始的表达式未在
          GROUP BY 子句中指定,或者,此表达式在带列函数的SELECT、HAVING 或 ORDER BY
         子句中存在,但却未指定 GROUP BY 子句。  SQLSTATE=42803 
xml文件:
<select id="findAllRoleFunInfoList" parameterClass="com.shunde.admin.sysroleright.domain.SysRoleRight" resultClass="com.shunde.admin.sysroleright.domain.SysRoleRight">
		<![CDATA[	
			select A.FUNCCODE as funcCode,A.FUNCNAME as funcName,A.leaf as leaf,A.ParentCode as parentCode, B.role_id
			from SYS_FUNINFO A left join SYS_ROLERIGHT B 
			on A.FUNCCODE=B.FUNCCODE and B.role_id=#role_id# order by A.FUNCCODE
		]]>
	</select>

跟踪了一下,问题是,在执行的时候,首先执行了一个select count(*) from SYS_FUNINFO A left join SYS_ROLERIGHT B
on A.FUNCCODE=B.FUNCCODE and B.role_id=#role_id# order by A.FUNCCODE
这样的语句,在oracle数据库执行没问题,在db2数据库执行就有问题,是ibatis配置的问题还是其他问题,order by语句在ibatis如何写?
   发表时间:2007-12-28  
ibatis只是一个sqlmap,order by还是按数据库的语法写。 先检查你的sql问题。
0 请登录后投票
   发表时间:2007-12-28  
最简单的方法把sql语句放到db2的客户连接段执行以下,看是否出错
0 请登录后投票
   发表时间:2008-01-16  
呵呵…………谢谢!问题已经解决了,是我们用的分页的问题。在执行SQL之前首先执行select count(*) 统计条数。修改的时候,把代码该成了,不管什么样的sql,把from 后的内容看成一个临时表或者时间。所以出现了在select count(*) from (表A) order by 字段  ,这种语法在db2数据库中是不被支持的!
0 请登录后投票
   发表时间:2008-01-20  
lonely_521 写道
呵呵…………谢谢!问题已经解决了,是我们用的分页的问题。在执行SQL之前首先执行select count(*) 统计条数。修改的时候,把代码该成了,不管什么样的sql,把from 后的内容看成一个临时表或者时间。所以出现了在select count(*) from (表A) order by 字段  ,这种语法在db2数据库中是不被支持的!

那你就把(表A) order by 字段 再作为一个临时表好了,前面再加一个select count(*) from
0 请登录后投票
   发表时间:2008-10-30  
count的时候需要order by吗请问?完全不需要。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics