1. ホーム
  2. sql

[解決済み】自然結合と内部結合の違いについて

2022-04-06 04:38:47

質問

自然結合と内部結合の違いは何ですか?

どのように解決するのですか?

INNER JOINとNATURAL JOINの大きな違いの1つは、返されるカラムの数です。

考えてみてください。

TableA                           TableB
+------------+----------+        +--------------------+    
|Column1     | Column2  |        |Column1  |  Column3 |
+-----------------------+        +--------------------+
| 1          |  2       |        | 1       |   3      |
+------------+----------+        +---------+----------+

INNER JOIN は、Column1 にある TableA と TableB の

SELECT * FROM TableA AS a INNER JOIN TableB AS b USING (Column1);
SELECT * FROM TableA AS a INNER JOIN TableB AS b ON a.Column1 = b.Column1;

+------------+-----------+---------------------+    
| a.Column1  | a.Column2 | b.Column1| b.Column3|
+------------------------+---------------------+
| 1          |  2        | 1        |   3      |
+------------+-----------+----------+----------+

NATURAL JOIN が返されます。

SELECT * FROM TableA NATURAL JOIN TableB
+------------+----------+----------+    
|Column1     | Column2  | Column3  |
+-----------------------+----------+
| 1          |  2       |   3      |
+------------+----------+----------+

繰り返される列は回避されます。

(標準文法では、自然結合では結合列を指定できません。結合は厳密に名前ベースです。 以下も参照してください。 ウィキペディア .)

( 内側joinの出力にチートがあります。 a.b. の部分はカラム名には含まれないので、単に column1 , column2 , column1 , column3 を見出しとする。 )