I have a very simple example but can't understand why final result of LEFT JOIN
returns 4 rows with value 3
.
CREATE or REPLACE TABLE t1 (col1 INTEGER);
CREATE or REPLACE TABLE t2 (col1 INTEGER);
INSERT INTO t1 (col1) VALUES
(1),
(2),
(3),
(3);
INSERT INTO t2 (col1) VALUES
(3),
(3);
SELECT t1.col1, t2.col1 FROM t1 LEFT OUTER JOIN t2 ON t1.col1 = t2.col1 ORDER BY 1,2
COL1|COL1
1 |NULL
2 |NULL
3 |3
3 |3
3 |3
3 |3
Do I understand correctly that LEFT
returns as many results for each row in left table as many matches it finds in the right table? (nb of rows times x nb of rows in right table). If yes, why such behaviour? It seems that after LEFT
a CARTESIAN
is performed.