我有一条查询语句是这么写的:
SELECT student., sum(rpresent) times, sum(rpresent) 5 score
FROM record
JOIN student ON rsid = sid
WHERE rcid = 'A1004'
GROUP BY sid
(汇总每个学生对应的rpresent并记分)
我发现它在Navicat中可以得到正确结果:如图(https://img2018.cnblogs.com/q/1198070/201901/1198070-20190128230112604-2011188067.png)
但是我在Springboot Mybatis中使用它时,只能得到2条记录,当rpresent都相同时,只有一条记录。
mapper文件中配置的sql语句
SELECT student.,sum(rpresent) times,sum(rpresent) #{score} score
FROM record
JOIN student ON rsid = sid
WHERE rcid = #{cid}
GROUP BY sid
就是说rpresent有多少种取值,就只有几条记录
但我想要的结果是统计每个学生的所有rpresent的sum,该怎么做?
如果是同样的语句执行的结果肯定一样 你现在结果不一样了 肯定是mybatis实际的语句有问题。你应该打开debug把实际执行的语句拿出来看一下
sum(rpresent) #{score} 这个是不是少了乘号
这个问题解决了吗?
第一:参数和使用sql直接执行是一致的嘛?
第二:sql我感觉是不是应该用right join student,以学生表为主表。如果使用join的话,一个学生在record中没有记录,最终也不会查询出来的呀。
解决了,网上查过,是Mybatis本身的问题。解决办法是再封装一个对象。问题有点久了,具体记不太清了
sum(rpresent) #{score} 这个是不是少了乘号
– zycyc 5年前