SQL中使用left join关联查询存在的问题
1、引用以下经验中创建的表及数据,并且在student表中添加一些数据,如下图所示,这样为外连接score查出null值做准备。
2、数据准备完成后,我们可以通过score,student两张表进行联查,查询出每个学生的总分数列表。创建实体类对数据进行接收,如下图所示。
3、利用left join左连接进行联查,sql如下。
4、运行main方法进行测试,我们发现,在接收实体类ScoreSum接收sql联查数据时,会报错,提示无法设置属性。
5、分析该报错,日志中提示setScore的时候报蕾蓄允嘞错,为非法值;该提示只有sql查出的score字段为null,在返回给接收实体类时,才会有该报错信息,因此,问题出现在查询返回null上面。利用sql直接在数据库中查找,如下结果,验证了该字段有null 值的猜想。
6、解决办法:可以将查询出的null值进行替湍恬擒舍换,替换为0,那么通过联查的数据在接收时就不会再报错。通过比对查找,可以使用ifnull()方法解决替换。如下是if函数和ifNull函数的用法。
7、使用ifnull方法,将其放入进查询sql中,如下图所示进行添加。
8、再次运行sql,将该查询结果和5步骤中结果进行比较,可以看到原先的null值已经被转换成0了。
9、更换程序ibatis的mapper文件中的sql并保存。
10、通过debug模式重新运行main方法进行测试,如下为测试结果;可以看到运行完查询sql没有再报错,且查询出结果了。
11、这样就解决了SQL中使用left join关联查询存在的问题,当然如果需要将值根据条件变更多个,可以使用if()方法。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:69
阅读量:23
阅读量:77
阅读量:36
阅读量:72