mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 03:22:14 +00:00
93 lines
3.4 KiB
SQL
93 lines
3.4 KiB
SQL
DROP TABLE IF EXISTS t1;
|
|
|
|
DROP TABLE IF EXISTS any_left_join;
|
|
DROP TABLE IF EXISTS any_inner_join;
|
|
DROP TABLE IF EXISTS any_right_join;
|
|
DROP TABLE IF EXISTS any_full_join;
|
|
|
|
DROP TABLE IF EXISTS semi_left_join;
|
|
DROP TABLE IF EXISTS semi_right_join;
|
|
DROP TABLE IF EXISTS anti_left_join;
|
|
DROP TABLE IF EXISTS anti_right_join;
|
|
|
|
CREATE TABLE t1 (x UInt32, str String) engine = Memory;
|
|
|
|
CREATE TABLE any_left_join (x UInt32, s String) engine = Join(ANY, LEFT, x);
|
|
CREATE TABLE any_inner_join (x UInt32, s String) engine = Join(ANY, INNER, x);
|
|
CREATE TABLE any_right_join (x UInt32, s String) engine = Join(ANY, RIGHT, x);
|
|
|
|
CREATE TABLE semi_left_join (x UInt32, s String) engine = Join(SEMI, LEFT, x);
|
|
CREATE TABLE semi_right_join (x UInt32, s String) engine = Join(SEMI, RIGHT, x);
|
|
|
|
CREATE TABLE anti_left_join (x UInt32, s String) engine = Join(ANTI, LEFT, x);
|
|
CREATE TABLE anti_right_join (x UInt32, s String) engine = Join(ANTI, RIGHT, x);
|
|
|
|
INSERT INTO t1 (x, str) VALUES (0, 'a1'), (1, 'a2'), (2, 'a3'), (3, 'a4'), (4, 'a5');
|
|
|
|
INSERT INTO any_left_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
INSERT INTO any_inner_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
INSERT INTO any_right_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
|
|
INSERT INTO semi_left_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
INSERT INTO semi_right_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
INSERT INTO anti_left_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
INSERT INTO anti_right_join (x, s) VALUES (2, 'b1'), (2, 'b2'), (4, 'b3'), (4, 'b4'), (4, 'b5'), (5, 'b6');
|
|
|
|
SET join_use_nulls = 0;
|
|
SET any_join_distinct_right_table_keys = 0;
|
|
|
|
SELECT 'any left';
|
|
SELECT * FROM t1 ANY LEFT JOIN any_left_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'any inner';
|
|
SELECT * FROM t1 ANY INNER JOIN any_inner_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'any right';
|
|
SELECT * FROM t1 ANY RIGHT JOIN any_right_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'semi left';
|
|
SELECT * FROM t1 SEMI LEFT JOIN semi_left_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'semi right';
|
|
SELECT * FROM t1 SEMI RIGHT JOIN semi_right_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'anti left';
|
|
SELECT * FROM t1 ANTI LEFT JOIN anti_left_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'anti right';
|
|
SELECT * FROM t1 ANTI RIGHT JOIN anti_right_join j USING(x) ORDER BY x, str, s;
|
|
|
|
-- run queries once more time (issue #16991)
|
|
|
|
SELECT 'any left';
|
|
SELECT * FROM t1 ANY LEFT JOIN any_left_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'any inner';
|
|
SELECT * FROM t1 ANY INNER JOIN any_inner_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'any right';
|
|
SELECT * FROM t1 ANY RIGHT JOIN any_right_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'semi left';
|
|
SELECT * FROM t1 SEMI LEFT JOIN semi_left_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'semi right';
|
|
SELECT * FROM t1 SEMI RIGHT JOIN semi_right_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'anti left';
|
|
SELECT * FROM t1 ANTI LEFT JOIN anti_left_join j USING(x) ORDER BY x, str, s;
|
|
|
|
SELECT 'anti right';
|
|
SELECT * FROM t1 ANTI RIGHT JOIN anti_right_join j USING(x) ORDER BY x, str, s;
|
|
|
|
DROP TABLE t1;
|
|
|
|
DROP TABLE any_left_join;
|
|
DROP TABLE any_inner_join;
|
|
DROP TABLE any_right_join;
|
|
|
|
DROP TABLE semi_left_join;
|
|
DROP TABLE semi_right_join;
|
|
DROP TABLE anti_left_join;
|
|
DROP TABLE anti_right_join;
|