需求:
有一张表记录人员的信息,现在想求人员年龄的中位数,采用的方法为:
先将表中的年龄排序并且给排序后的年龄加上行序返回一个中间表,然后再查这个中间表,返回行号为中间值的年龄的平均值。
SQL代码如下;
set @rowindex = 0;
select avg(temp2.age) from
(select @rowindex:=@rowindex + 1 as rawindex,student.age as age from student order
by student.age) AS temp2 where temp2.rawindex IN (FLOOR((@rowindex+1) / 2) ,
CEIL((@rowindex+1) / 2));
问题:
这段sql语句中因为含有sql变量@rowindex,用来记录行序,但其在mysql中能正确返回结果,但在java代码里报错,提示语法错误,希望各位码友指教,如何解决?
1.sql中执行的正确结果(17行红叉不影响,因为是17行上面的sql导致的)
2.java中的代码以及报错:
JDBC连接Mysql的驱动mysql-connector用的最新的
你这实际上是多条SQL语句,默认无法一次性执行多条SQL语句,但好像可以修改jdbc连接设置,具体请度娘。