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

网站的开发方法有哪些汕头市建设局网站

网站的开发方法有哪些,汕头市建设局网站,大学广告设计专业,计算机网站开发背景最近在项目中遇到一个问题,感觉有点意思,在解决问题及查阅了相关资料后,打算写篇文章给朋友们分享一下。 问题现象: 问题是很常见的空指针问题,后端查询数据库数据,遍历进行相关业务处理时报空指针。通过…

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

问题现象:

问题是很常见的空指针问题,后端查询数据库数据,遍历进行相关业务处理时报空指针。通过断点调试发现问题就出在查询回来的数据上,返回的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/644258/

相关文章:

  • 做美食网站wordpress摄影社
  • 旅游网站开发的背景和意义如何做服装微商城网站建设
  • 一键网站建站系统wordpress显示doc
  • 微信网站开发多少钱顺义做网站
  • 做网站的公司给出个证明谷歌手机网页版入口
  • 电商网站 投诉wordpress汉字注册
  • 用户体验比较好的网站淘宝网站开发用到哪些技术
  • 推荐几个自学做衣服的网站吉林省建设工程质监站网站
  • 如何提高网站点击率wordpress创意博客
  • 如何投稿小说到各大网站做新媒体和网站
  • 给企业做网站 内容需要对方提供做一个网站只做前端怎么做
  • dede网站地图模板下载wordpress手机上无法写文章
  • 郑州高端网站建设公司学做网站教程
  • 南京网站建设优化建站公司的服务器
  • 企业怎么做网站宁波网站建设首选品牌
  • 长沙网站建站模板福州注册公司流程及费用
  • 站长查询seo是什么意思wordpress n点资讯主题
  • 网站建设世纪明珠制作网站 公司简介
  • 网站备案身份核验wordpress 导航文字图片
  • 网站开发前端要学什么软件河北网站优化
  • 如何让百度搜到自己的网站网页设计与制作课程思政教案
  • 咋样建设网站农村服务建设有限公司网站
  • 宁波建设银行管方网站郑州商城网站建设多少钱
  • 开发网站的基本原则网址界面
  • 厦门市房地产建设局网站前端转行可以找啥工作
  • 专业企业网站制作怎么做平面设计网课平台哪个好
  • 公司做网站开票是什么项目一个网站需要多大的空间
  • 提供专业网站建设平台wordpress前台无法访问
  • 如何做网站平台关注创意策划是做什么的
  • 南宁企业如何建网站天津网站制作福州