statement ok create table x(a int, b int); statement ok create table y(c int, d int); statement ok insert into x values (1, 2), (1, 3); query IIII select a, b, c, d from x join y on a = c; ---- statement ok insert into y values (1, 5), (1, 6), (2, 7); query IIII select a, b, c, d from x join y on a = c; ---- 1 2 1 5 1 3 1 5 1 2 1 6 1 3 1 6 query IIII select a, b, c, d from x, y; ---- 1 2 1 5 1 2 1 6 1 2 2 7 1 3 1 5 1 3 1 6 1 3 2 7 query IIII select a, b, c, d from x cross join y; ---- 1 2 1 5 1 2 1 6 1 2 2 7 1 3 1 5 1 3 1 6 1 3 2 7 statement ok drop table x; statement ok drop table y; statement ok create table a(v1 int, v2 int); statement ok create table b(v3 int, v4 int); statement ok insert into a values (1, 1), (2, 2), (3, 3); query IIII select v1, v2, v3, v4 from a left join b on v1 = v3; ---- 1 1 NULL NULL 2 2 NULL NULL 3 3 NULL NULL query I select v1, v2, v3, v4 from a, b; ---- statement ok insert into b values (1, 100), (3, 300), (4, 400); query IIII select v1, v2, v3, v4 from a left join b on v1 = v3; ---- 1 1 1 100 3 3 3 300 2 2 NULL NULL query IIII select v1, v2, v3, v4 from a right join b on v1 = v3; ---- 1 1 1 100 3 3 3 300 NULL NULL 4 400 query IIII select v1, v2, v3, v4 from a full join b on v1 = v3; ---- 1 1 1 100 3 3 3 300 2 2 NULL NULL NULL NULL 4 400 statement ok drop table a; statement ok drop table b; statement ok create table a(v1 int, v2 int); statement ok create table b(v3 int, v4 int, v5 int); statement ok insert into a values (1, 1), (2, 2), (3, 3); statement ok insert into b values (1, 1, 1), (2, 2, 2), (3, 3, 4), (1, 1, 5); query IIIII select v1, v2, v3, v4, v5 from a join b on v1 = v3 and v2 = v4; ---- 1 1 1 1 1 2 2 2 2 2 3 3 3 3 4 1 1 1 1 5 query IIIII select v1, v2, v3, v4, v5 from a join b on v1 = v3 and v2 = v4 and v1 < v5; ---- 3 3 3 3 4 1 1 1 1 5