3 ms·
I posted a link to the issue discussing this on the repo. That gives a good overview to those interested in this issue. To take one point from there: > Is ful
by maximilianroos 3y ago
I posted a link to the issue discussing this on the repo. That gives a good overview to those interested in this issue.
To take one point from there:
> Is fully equivalent to:
They're not fully equivalent — `USING` combines the two columns into a single column, `ON` doesn't.
- ttfkam 3y agoUSING just presumes the columns have the same name on both ends. There is no logical "combining", only a lexical one. It's why many DB admins/engineers use "foo_id" instead of "id" in their schemas as a rule. (Notably, also one of the reasons why many DB admins/engineers hate ORMs and other table generators that name id columns generically as "id".) The person you are responding to is likely in this cohort. You're correct that they aren't exactly equivalent, but that's an artifact of your table definition, not the language. It likely seemed perfectly reasonable to the commenter that this naming was a trivial detail in the scope of the greater conversation.
- deleted 3y ago[deleted]
- maximilianroos 3y agoOK, so we agree they're not fully equivalent
- dllthomas 3y agoWITH t AS (SELECT 1 x) SELECT x FROM t JOIN t u ...; That breaks if you fill in the ... with "ON t.x = u.x" because there are two columns called "x", but works with "USING (x)" because they get collapsed into a single column. I think it makes sense to say those aren't fully equivalent.