
java:
String hql = "select myrank from "+ "( select s.*,dense_rank() over (order by s.studentScore desc) as myrank from StudentPo s) myranktable "
+ "where myranktable.studentId = "+currentUser.getStudentId()+""
数据库里面:
select myrank from(select s.* , rank() over (order by s.student_score desc) as myrank from student_tb s) myranktable
where myranktable.student_id= 13
一样一样的句子,在框架里面就不跑,简直神特么奇怪。
关于语句的拆分:
select s.* , rank() over (order by s.student_score desc) as myrank from student_tb s这是根据学生成绩得到一个排序过后的表儿,最后一列 列名是 myrank。根据学生成绩排的名词。【可以把 rank() 换成dense_rank()看看效果。】
招数2:【因为总是报未识别的 token(标志),比如 走一遍 java,可能 数据库 就不认识 rank() 和 dense_rank()了。】
所以 我的 java里面这样写的:
String sql = "select myrank from "+ " ( select s.student_id,rank() over ( order by s.student_score desc ) as myrank from student_tb s ) "
+ " where student_id = "+currentUser.getStudentId()+""
Query query = this.getSession().createSQLQuery(sql)
List list =query.list()
this.getSession().beginTransaction().commit()
System.out.println(list)
//this.getHibernateTemplate().
Object ob = list.get(0)
String string = ob.toString()
int number = Integer.parseInt(string)
System.out.println("排名:"+number)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)