presto sql:带有'using'语句的多重联接

presto sql:带有'using'语句的多重联接,sql,presto,Sql,Presto,我有多个表,我像这样连接它们(它们共享同一个键) select * from user_account_profile inner join user_asset_profile using (user_id) left join user_trading_profile using (user_id) 我想知道如何使用密钥user\u id,它是否等同于 select * from user_account_profile t1 inner join user_asset_profile t

我有多个表,我像这样连接它们(它们共享同一个键)

select *
from user_account_profile
inner join user_asset_profile
using (user_id)
left join user_trading_profile
using (user_id)
我想知道如何使用密钥
user\u id
,它是否等同于

select *
from user_account_profile t1
inner join user_asset_profile t2
on t1.user_id = t2.user_id
left join user_trading_profile t3
on t1.user_id = t3.user_id


或者如果这些查询都是等效的?

您的两个版本在功能上是等效的(除了不使用
时重复的
用户id
列的明显差异)。第一个
内部联接
要求两个
用户id
具有相同的值,因此任何一个比较都返回相同的结果集

如果您有一系列
左连接
s,那么您将要求值位于第一个表中,等效值为
t1.user\u id


如果您有
完全连接
s,那么您将不知道。匹配将来自在行上具有值的表。如果两个表都有一个值,则逻辑表明它们是相同的,因此没有区别。

a.id=b.id上的
与使用(id)
之间略有不同。在后一种情况下,结果关系中只有一个
id
列,您不需要(也不能)用表/别名限定
id
select *
from user_account_profile t1
inner join user_asset_profile t2
on t1.user_id = t2.user_id
left join user_trading_profile t3
on t2.user_id = t3.user_id