1. ホーム
  2. sql

[解決済み] カンマで区切られた2つのテーブルからのSELECTはどのように機能するのでしょうか?(select * from t1, t2)

2022-02-18 20:10:50

質問

2つの表T1、T2がある。

T1   T2 
---------
A    1 
B    2
C    3

クエリを作成するのです。

SELECT * 
  FROM T1, T2

このクエリからフェッチされた行の数は?

(a) 4
(b) 5
(c) 6
(d) 9

答えは、「9」です。

質問です。

なぜ答えは "9"なのでしょうか?

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

2つのテーブルの間にあるカンマは クロスジョイン となり、その結果 カルテシアン積 の2つのテーブルの あなたのクエリーは、以下と同等です。

SELECT *
FROM T1
CROSS JOIN T2

結果は、最初のテーブルの行と2番目のテーブルの行の組み合わせになります。したがって、結果の行数は、元の表の行数の積となる。この場合、答えは3×3=9である。

行は次のようになります。

T1.foo   T2.bar
A        1
A        2
A        3
B        1
B        2
B        3
C        1
C        2
C        3