分页mysqlduplicate column
ssh开发,数据库用的mysql。
分页时,需获取数据总函数totalcount,进一步得到totalpage,获取totalcount的代码(略去绑定参数、入参检查等代码):
/** * 获取总记录数 */protected int gettotalcount(session s, string sql){ //构建count查询 sql = select count(1) from ( + sql + ) tmp; query countquery = s.createsqlquery(sql); //输出结果 list countlist = countquery.list(); return (integer)countlist.get(0);}
以上代码在特殊情况下报“duplicate column name 'xxxx'”,例:
user表字段:**_user_id_**, login_name, passwd, ...
user_detail表字段:user_detail_id, user_id, address, ...
查询sql(**_代号sql1_**):select * from user u inner join user_detail ud on u.user_id = ud.user_id
最终生成的查totalcount的sql(代号sql2)是:
select count(1) from (
select * from user u inner join user_detail ud on u.user_id = ud.user_id
) tmp
执行报错,原因是user、user_detail表都有user_id字段,sql1出来的结果包含了重名字段user_id,在sql2中引用成tmp表时就会报重名错误。
想请教问题如下:
1、oracle中执行sql2就不会报错,有没有办法改变mysql的设置使得执行sql2的时候不再报错?
2、有没有其它的方法计算totalcount
小鲜肉写过大侠们了。