T-SQLでは、 JOIN
仕様(ON …
)は、両方のテーブルで同じ名前を持つ2つのカラムでこのような結合が行われたときに、2つのテーブル間の等価結合に対して単純化される可能性がありますか?
CREATE TABLE T1 (X … PRIMARY KEY);
CREATE TABLE T2 (X … REFERENCES T1 (X));
通常、私はそのような(内部)結合を次のように記述します:
SELECT … FROM T1 JOIN T2 ON T1.X = T2.X;
私が望むのは、次のようなもっと単純なものです:
SELECT … FROM T1 JOIN T2 ON X;
そのような略語は ON …
どういうわけか仕様が可能ですか? (私は答えが "いいえ"と思うが、確かめたい)
そうでない場合は、何か特別な理由はありますか? (たとえば、2つ以上のテーブルが結合されている場合、頻繁に列のあいまい性が発生する可能性があり、したがって実用性はほとんどありませんか?)
回答:
回答№1の場合は7ある 自然結合 ANSI 92 SQL標準
SELECT … FROM T1 NATURAL JOIN T2
ただし、これはSQL Serverではサポートされていません。あなたが結合された列を明示的に指定していないときにあいまいさがある可能性があるので、おそらく良いことです。
あなたが言及した構文のような省略形はありません
FROM T1 JOIN T2 ON X;
回答№2については2
- SQL Server(T-SQL)では、このようなショートカットはありません。
JOIN
列。 - Oracle(P-SQL)では、
NATURAL JOIN
両方のテーブルの同じ名前の列と一致します。 - MySQLでは、
USING
SQL ServerとOracleの間には冗長性があります。一度だけ列名を書く必要がありますA JOIN B USING (col1, col2, col3)
NATURAL JOIN
ANSI SQLの中にありますが、私たちが知っているように、主要なSQLベンダーのどれもが標準を完全にサポートしていません。それぞれには独自の追加や標準からの逸脱があります。