Sql 使用[权利]。。实践
这个问题涉及:Sql 使用[权利]。。实践,sql,Sql,这个问题涉及: 我想知道在实践中是否有人写过或遇到过使用右连接的有用方法?如果是,情况是怎样的?我还没有真正了解自己(除了看到“查看此右连接”的示例之外),所以我想知道这是否实际用于实践中,如果是,上下文是什么?考虑一种情况,在这种情况下,我需要一个横向连接来获取列的join键(例如,因为值存储在数组中)。然后我想加入一个固定的代码列表,比如说计数它们。我可以这样写: select c.code, count(u.code) from codes c left join (t
我想知道在实践中是否有人写过或遇到过使用
右连接的有用方法?如果是,情况是怎样的?我还没有真正了解自己(除了看到“查看此右连接”的示例之外),所以我想知道这是否实际用于实践中,如果是,上下文是什么?考虑一种情况,在这种情况下,我需要一个横向连接来获取列的join
键(例如,因为值存储在数组中)。然后我想加入一个固定的代码列表,比如说计数它们。我可以这样写:
select c.code, count(u.code)
from codes c left join
(t cross join lateral
unnest(codes) u(code)
)
on c.code = u.code;
或者通过使用右连接
:
select c.code, count(u.code)
from t cross join lateral
unnest(codes) u(code) right join
codes c
on c.code = u.code;
我仍然更喜欢left join
版本,但有些人可能更喜欢在from
子句中避免使用括号
如果在from
子句中只有两个表,left join
和right join
可以互换;当有两个以上的表时,这并不总是正确的。我不确定字母表的阅读方向是否会影响人们喜欢的外部连接。我假设用户母语的基本语法可能会产生影响,可能是宾语先于主语的语言;然而,这样的语言是相当罕见的,也不在更常见的语言中。实际上,左连接和右连接之间没有什么具体的不同做法,但是从句排列。回到SQL的定义中,它只是DBMS的order命令的语句安排
如果使用RIGHT-JOIN
子句,数据将更倾向于RIGHT上的表(在JOIN子句之后提到),使用LEFT-JOIN
会使RIGHT-JOIN的相反之处人们倾向于避免RIGHT-JOIN
,因为它们在某种程度上是反直觉的(至少对于从左到右阅读的人来说是如此!)。但归根结底,这更多的是一个品味的问题,对我来说,这是一个基于观点的问题。@GMB。这不仅仅是品味的问题。SQL从左向右解析,A左连接B左连接C
可能与C右连接B右连接A
略有不同,具体取决于条件。另外,什么是横向连接
?我以前从未见过——什么rdbms?@David542。横向联接是SQL标准的一部分,尽管语法不同(例如,SQL Server使用交叉应用
)。Postgres、Oracle、SQL Server、MySQL的最新版本、PrestoDB和Snowflake(可能还有其他)都支持它们。这是官方的SQL标准吗?或者您是否可以链接到另一个包含SQL标准的站点?