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

 时间:2024-10-11 22:45:23

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()方法。

  • win10系统如何隐藏系统盘文件的方法
  • Win10中怎么禁用本地用户
  • 笔记本键盘输入字母变成小键盘上数字的解决方法
  • Windows编辑内置域控组策略用户首选项计划任务
  • win10ntdlldll故障怎么解决
  • 热门搜索
    旅游同业网 华山旅游网 贵州旅游线路推荐 中俄旅游年 我爱旅游交易平台 马来西亚旅游地图 凤凰旅游多少钱 纽约旅游攻略 意大利旅游地图 南雄旅游景点大全