完成SQL新手,试图理解以下TPC查询:
select
l_orderkey,
sum(l_extendedprice * (1 - l_discount)) as revenue,
o_orderdate,
o_shippriority
from
customer,
orders,
lineitem
where
c_mktsegment = ':1'
and c_custkey = o_custkey
and l_orderkey = o_orderkey
and o_orderdate < date ':2'
and l_shipdate > date ':2'
group by
l_orderkey,
o_orderdate,
o_shippriority
order by
revenue desc,
o_orderdate;
:n 10我的印象是,您只能在连接后从不同的表中进行选择。不过,我在这里没有看到任何连接。这是隐含的吗?
发布于 2021-06-27 21:22:46
逗号是CROSS JOIN的过时语法。这与笛卡尔积本质上是一样的(尽管FROM子句中的范围规则有点不同)。
WHERE子句中的筛选条件恰好将这个笛卡尔积转换为一个内部联接,但这是FROM类之后过滤的一个函数。
您应该忘记,您已经学会了这种语法是有效的。使用显式JOIN语法,即使对于CROSS JOIN也是如此。几十年来,JOIN一直是SQL语法的一部分--字面上来说--而且添加它是有很好的理由的。
https://stackoverflow.com/questions/68155282
复制相似问题