SQL中使用left join关联查询存在的问题

2025-04-16 12:17:44

1、引用以下经验中创建的表及数据,并且在student表中添加一些数据,如下图所示,这样为外连接score查出null值做准备。

SQL中使用left join关联查询存在的问题

2、数据准备完成后,我们可以通过score,student两张表进行联查,查询出每个学生的总分数列表。创建实体类对数据进行接收,如下图所示。

SQL中使用left join关联查询存在的问题

3、利用left join左连接进行联查,sql如下。

SQL中使用left join关联查询存在的问题

4、运行main方法进行测试,我们发现,在接收实体类ScoreSum接收sql联查数据时,会报错,提示无法设置属性。

SQL中使用left join关联查询存在的问题

5、分析该报错,日志中提示setScore的时候报蕾蓄允嘞错,为非法值;该提示只有sql查出的score字段为null,在返回给接收实体类时,才会有该报错信息,因此,问题出现在查询返回null上面。利用sql直接在数据库中查找,如下结果,验证了该字段有null 值的猜想。

SQL中使用left join关联查询存在的问题

6、解决办法:可以将查询出的null值进行替湍恬擒舍换,替换为0,那么通过联查的数据在接收时就不会再报错。通过比对查找,可以使用ifnull()方法解决替换。如下是if函数和ifNull函数的用法。

SQL中使用left join关联查询存在的问题

7、使用ifnull方法,将其放入进查询sql中,如下图所示进行添加。

SQL中使用left join关联查询存在的问题

8、再次运行sql,将该查询结果和5步骤中结果进行比较,可以看到原先的null值已经被转换成0了。

SQL中使用left join关联查询存在的问题

9、更换程序ibatis的mapper文件中的sql并保存。

SQL中使用left join关联查询存在的问题

10、通过debug模式重新运行main方法进行测试,如下为测试结果;可以看到运行完查询sql没有再报错,且查询出结果了。

SQL中使用left join关联查询存在的问题

11、这样就解决了SQL中使用left join关联查询存在的问题,当然如果需要将值根据条件变更多个,可以使用if()方法。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢