大数据面试之SQL

SQL语句的执行顺序从FROM开始,包括JOIN,WHERE,GROUPBY,聚合函数,HAVING,窗口函数,SELECT,DISTINCT,ORDERBY和LIMIT。LEFTJOINON1=1是一个特殊连接语法,表示无条件地连接两个表,可能导致数据重复。编写SQL时,执行顺序的理解至关重要,错误的顺序常导致问题。

SQL语句的执行顺序&SQL语句的书写顺序
SQL语句的书写顺序
select
from
where
group by
having
order by
[limit]
limit是MySQL中独有的,Oracle中没有
书写顺序如果不对的话,在写语句的时候像Datagrip编译软件(很好用,就像VSCODE,很推荐使用)会进行报错,所以也是比较重要的。
SQL语句的执行顺序
虽然书写顺序是如上这样子的,但是执行顺序却不然。
from
join…on
where
group by
聚合函数(sum,avg,count,max,min)
having
窗口函数(over())
select
distinct
order by
limit
是的没错,执行顺序是从from开始的,然后是join on语句,也就是左连接内连接那些,然后就是剩下的这些顺序
执行顺序是最最重要的,一般语句出问题都是出在执行顺序上,可以说有80%都是执行顺序不对。
举个栗子:
在select中定义了count(score)的别名count_score,那么order by中是可以使用这个别名,但是group by就不能使用这个别名,只能用count(score)。

left join on 1=1是什么意思
在SQL中,LEFT JOIN ON 1=1 是一种特殊的JOIN语法,它可以将左边的表与右边的表进行连接,而不依赖于任何真实的条件。

正常情况下,JOIN 操作需要指定连接条件,例如 ON table1.column = table2.column,其中 table1 和 table2 是要连接的两个表,column 是用于匹配的列名。但是当我们使用 ON 1=1 时,表示两个表之间的连接会无条件地进行,因为 1=1 在 SQL 中始终为真。

这种用法通常用于需要联接两个表的情况,但没有明确的连接条件或希望获取两个表的完整集合,而不考虑任何条件过滤。

需要注意的是,LEFT JOIN ON 1=1 可能会导致大量的数据重复和笛卡尔积,因为它没有任何限制条件。在使用时,请确保了解数据表之间的关系,并理解这种用法可能带来的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值