ITPub博客

首页 > 数据库 > 数据库开发技术 > 大数据 面试 SQL left join 测试结果

大数据 面试 SQL left join 测试结果

原创 数据库开发技术 作者:晨曦_001 时间:2023-11-24 08:06:00 0 删除 编辑

题目

上篇文章给大家处理一个小测试,未参与或者忘了题目内容的可以点击链接看下。

大数据 面试SQL-left join关联条件测试

这个题目的正确答案为B,下面是大家选择结果,准确率为36%,说明大家还是忽略了一些基础知识的细节的。




我们可以看到,选择集中在B和C,差别点在结果是否包含“1,null”该行。

第一点:大家都能够确定的是t2.id肯定是NULL,说明大家对于on条件中的t1.id = 2 的关联条件,可以限制t2表的结果;

第二点:left join 中的on条件是关联条件,不限定左表数据,所以t1表中的所有数据都需要保留;

第三点:在真实需求下,期望得出C的结果是错写出该SQL,产出C结果的SQL如下:

selectt1.id,t2.idfrom t1left join t2on t1.id = t2.idwhere t1.id =2;

附

1.首先这个题目的SQL写法不是很常见,为了考察对应知识点特意在on条件中限定左表;

2.通常在做关联时,都是对原始表进行行列裁剪之后再进行关联,这样既可以减少关联计算涉及的数据量,也减少逻辑的复杂度,可读性更好.如果业务逻辑复杂上面的SQL出错的可能性还是比较高的,所以我通常的写法如下:

select	new_t1.id,	new_t2.idfrom(	select		id	from t1	where t1.id=2) new_t1left join(	select		id	from t2)new_t2on new_t1.id = new_t2.id

3.群里的朋友也给出使用CETs的写法,在逻辑复杂的情况下会更加清晰,同样的也是先做行的裁剪。

with new_t1 as(	select		id	from t1	where t1.id=2),new_t2 as(	select		id	from t2)select  new_t1.id, new_t2.id from new_t1 left join new_t2 on new_t1.id = new_t2.id

社群

为了方便交流和得到大家的反馈,我创建了一个交流群,欢迎大家加入。(社群不卖课,不开星球,只交流)



原文作者:数据仓库技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
公众号:数据仓库技术 数据仓库技术:https://dwsql.com spark内置函数手册: https://sparkfunctions.com

注册时间:2022-12-18

  • 博文量
    116
  • 访问量
    55263