LEFT JOIN 需要注意的点(Presto)

最近工在Presto中用了很多关联查询操作,遇到了一些问题再这里记录一下。

LEFT JOIN的基本概念

LEFT JOIN是我们最常用的关联查询,对于之前很少直接接触复杂关联查询的兄弟,我们还是需要弄清楚一些基本概念。

  • LEFT JOIN是逻辑操作符,对于放在左边的表来说,是以其为base,如果SELECT查询的字段全都来自左边的表,那么最终的结果条数会 >= 左表条数
  • 数据库优化器是最终决定执行顺序的地方,一般的会按照你的LEFT JOIN的顺序执行,但也不保证完全是那样。

怎么执行呢?

例如:

SELECT table_1.a, table_1.b, table_1.c
FROM table_1 
    LEFT JOIN table_2
    ON table_1.uid = table_2.uid
    LEFT JOIN talbe_3
    ON table_1.uid = table_3.uid

执行顺序是:table_1和table_2先组合成一个虚拟表,然后这个虚拟表再和table_3关联。

多个LEFT JOIN连接,记录的条数是不是主表的条数?

如上面的语句,在没有WHERE语句情况下,是大于等于table_1的条数。
这是因为:

- SELECT 后面的字段均来自table_1;
- 所有的关联条件都是为了匹配table_1;

LEF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值