当前位置: 首页 > news >正文

网站建设流程及规范电脑做软件的app

网站建设流程及规范,电脑做软件的app,2023房地产新闻,石家庄市做网站最近在项目中遇到一个问题,感觉有点意思,在解决问题及查阅了相关资料后,打算写篇文章给朋友们分享一下。 问题现象: 问题是很常见的空指针问题,后端查询数据库数据,遍历进行相关业务处理时报空指针。通过…

最近在项目中遇到一个问题,感觉有点意思,在解决问题及查阅了相关资料后,打算写篇文章给朋友们分享一下。

问题现象:

问题是很常见的空指针问题,后端查询数据库数据,遍历进行相关业务处理时报空指针。通过断点调试发现问题就出在查询回来的数据上,返回的List集合中有一条空数据导致的。
在这里插入图片描述
就很纳闷,怎么会返回空数据?

继续排查

发现sql执行完确实有一行空数据,先给兄弟们看一下sql(业务代码不便透露这里进行了简化,主要复现问题):

SELECTo.order_id,o.order_no,o.detail_id,o.product_id,o.batch,o.comp_brand_id,o.supplier_id,o.buyer
FROMtr_production_purchase_contract_and_order contractOrderLEFT JOIN t_daily_purchase_order o ON contractOrder.order_id = o.order_id AND contractOrder.contract_id = '1585249657636917248' AND contractOrder.del_flag = '0'

大概意思就是关联搜索contract_id = '1585249657636917248’的数据,执行结果显示contractOrder.contract_id = ‘1585249657636917248’ AND contractOrder.del_flag = '0’条件没有生效。
在这里插入图片描述
为啥不生效?第一反应写错了,仔细检查没有问题。于是怀疑left join on后面加条件是不是有什么特殊的,查完资料,还确实非常特殊。join on后面加条件与where条件是不一样的。

先给结论:

  • left join
    on后面条件筛选是对2张表生成的全连接(笛卡尔积)临时表进行的筛选,无论on后面的条件是否满足都会返回左表的所有数据,不符合条件的右表的值都为null

  • right join
    同上,只不过是最终返回右表的所有数据,不符合条件的左表的值都为null

  • inner join
    inner join有点不一样,它是两张表取交集,最终的结果是符合所有条件的值,所以on后面的条件可以生效

  • where
    查询出来的结果最后都会再经过where条件进行过滤,满足条件才会返回

由此可见left join 的时候,on后面对左表的数据加筛选条件是没有用的。上面问题的原因也找到了因为只查询了右表的值,因为不满足条件,所以查询回来的数据为空。

为了验证这个观点,我们进行一下测试:
员工表
在这里插入图片描述
部门表
在这里插入图片描述
left join 单条件查询

select 
t.emp_id,
t.name,
t.age,
d.dept_id,
d.dept_name
from t_emp t
left join t_dept d on t.dept_id = d.dept_id

在这里插入图片描述
on 后面加条件

select 
t.emp_id,
t.name,
t.age,
d.dept_id,
d.dept_name
from t_emp t
left join t_dept d on t.dept_id = d.dept_id and t.emp_id = '4';

在这里插入图片描述
把on的所有条件作为匹配条件,不符合的右表都为null

where 后面加条件

select 
t.emp_id,
t.name,
t.age,
d.dept_id,
d.dept_name
from t_emp t
left join t_dept d on t.dept_id = d.dept_id where t.emp_id = '4';

在这里插入图片描述
匹配完再筛选,结果只有一条记录。

inner join 多条件查询

select 
t.emp_id,
t.name,
t.age,
d.dept_id,
d.dept_name
from t_emp t
inner join t_dept d on t.dept_id = d.dept_id where t.emp_id = '4';

在这里插入图片描述
总结:

在连表操作的时候,其实是先进行了2表的全连接(笛卡尔积,也就是所有能组合的情况a.rowCount*b.rowCount),然后根据on后面的条件进行筛选,最后如果是左连接或者右连接,再补全左表或者右表的数据。

个人理解不一定正确,欢迎指正

参考文章:
join on多个条件的理解

http://www.yayakq.cn/news/608121/

相关文章:

  • 在国际网站上做贸易怎么发货用服务器做网站需要购买域名吗
  • 青岛做网站的费用黑龙江建设厅网站官网
  • 跑纸活做网站泉州优化怎么做seo
  • 苏州品牌网站制作公司建筑设计和室内设计的区别
  • 中山建网站推荐vi设计公司 北京
  • 网站在线留言系统杭州哪家网站建设好
  • 网站建站常见问题源码屋官网
  • 站长工具友链检测新的网站怎么做seo
  • 网站门户怎么建设石景山网站开发
  • 网站建设咨询哪些方面北京软件外包公司
  • 设计感网站绵阳建设工程信息网站
  • 国内好的seo网站服务器图片
  • php网站建设视频教程ui设计培训资料
  • 如何做好公司网站建设软件工程师中级职称
  • o2o网站建设方案ppt中国建设银行福清分行网站
  • 京东网站建设目标是什么意思在国外做电商网站有哪些
  • 如何创建一个网站的步骤公关策划公司网站源码
  • 网站前端建设都需要什么问题爱站关键词挖掘软件
  • 电子商务网站建设训练总结吉林省新闻最新头条
  • 营口房产建设信息网站南油网站建设
  • 凡科抽奖首页优化公司
  • 广东品牌网站建设报价ao主题wordpress
  • 网站开发安全模块方案wordpress主题 mohtml
  • 个域名的网站建设方案书怎么做网站商城
  • 网站 刷流量app开发制作哪里正规
  • 泰国做网站网站要判几年做简单网站后端需要学什么
  • 南阳网站建设哪家专业wordpress设置显示为英文版
  • wordpress上传安装信誉好的镇江网站优化
  • 长沙哪家网站设计好乌尔禾区做网站哪里好
  • 买奢侈品去哪个网站有正品南沙开发区建设和交通局网站