jallenjia 2015-01-31 14:43 采纳率: 0%
浏览 1582

【ssh 分页问题】ssh开发,分页时mysql报duplicate 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

小鲜肉写过大侠们了。

  • 写回答

2条回答 默认 最新

  • vacant小坏 2015-01-31 16:21
    关注

    你讲select count(1) from 改为select count(*) 试试 我之前用hibernate查询记录数想用count 1提高检索速度 但是当时报错 改了之后就好使了 或许是个bug

    评论

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的