select 1 union ( select 2 union select 3); 1 1 2 3
explain extended
select 1 union ( select 2 union select 3);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 4 UNION <derived2> ALL NULL NULL NULL NULL 2100.00 2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
NULL UNION RESULT <union1,4> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003/* select#1 */ select 1 AS `1` union /* select#4 */ select `__4`.`2` AS `2` from (/* select#2 */ select 2 AS `2` union /* select#3 */ select 3 AS `3`) `__4`
select 1 union ( select 1 union select 1); 1 1
explain extended
select 1 union ( select 1 union select 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 4 UNION <derived2> ALL NULL NULL NULL NULL 2100.00 2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
NULL UNION RESULT <union1,4> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003/* select#1 */ select 1 AS `1` union /* select#4 */ select `__4`.`1` AS `1` from (/* select#2 */ select 1 AS `1` union /* select#3 */ select 1 AS `1`) `__4`
select 1 union all ( select 1 union select 1); 1 1 1
explain extended
select 1 union all ( select 1 union select 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 4 UNION <derived2> ALL NULL NULL NULL NULL 2100.00 2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003/* select#1 */ select 1 AS `1` union all /* select#4 */ select `__4`.`1` AS `1` from (/* select#2 */ select 1 AS `1` union /* select#3 */ select 1 AS `1`) `__4`
select 1 union ( select 1 union all select 1); 1 1
explain extended
select 1 union ( select 1 union all select 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 4 UNION <derived2> ALL NULL NULL NULL NULL 2100.00 2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union1,4> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003/* select#1 */ select 1 AS `1` union /* select#4 */ select `__4`.`1` AS `1` from (/* select#2 */ select 1 AS `1` union /* select#3 */ select 1 AS `1`) `__4`
select 1 union select 1 union all select 1; 1 1 1
explain extended
select 1 union select 1 union all select 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 2 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used 3 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union1,2,3> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003/* select#1 */ select 1 AS `1` union /* select#2 */ select 1 AS `1` union all /* select#3 */ select 1 AS `1`
(select 1 as a) union (select 2) order by a;
a 1 2
explain extended
(select 1 as a) union (select 2) order by a;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 2 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL Using filesort
Warnings:
Note 1003 (/* select#1 */ select 1 AS `a`) union (/* select#2 */ select 2 AS `2`) order by `a` /* select#1 */ select 1 AS `a` union /* select#2 */ select 2 AS `2` order by `a`;
a 1 2
explain extended /* select#1 */ select 1 AS `a` union /* select#2 */ select 2 AS `2` order by `a`;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 2 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL Using filesort
Warnings:
Note 1003/* select#1 */ select 1 AS `a` union /* select#2 */ select 2 AS `2` order by `a`
select 1 union ( select 1 union (select 1 union (select 1 union select 1))); 1 1
explain extended all
select 1 union ( select 1 union (select 1 union (select 1 union select 1)));
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL No tables used 8 UNION <derived2> ALL NULL NULL NULL NULL 2100.00 2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 7 UNION <derived3> ALL NULL NULL NULL NULL 2100.00 3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 6 UNION <derived4> ALL NULL NULL NULL NULL 2100.00 4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used 5 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
NULL UNION RESULT <union4,5> ALL NULL NULL NULL NULL NULL NULL
NULL UNION RESULT <union3,6> ALL NULL NULL NULL NULL NULL NULL
NULL UNION RESULT <union2,7> ALL NULL NULL NULL NULL NULL NULL
NULL UNION RESULT <union1,8> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003/* select#1/0 Filter Select: select `1` AS `1` */ select 1 AS `1` union /* select#8/0 */ select `__8`.`1` AS `1` from (/* select#2/1 Filter Select: select `1` AS `1` */ select 1 AS `1` union /* select#7/1 */ select `__7`.`1` AS `1` from (/* select#3/2 Filter Select: select `1` AS `1` */ select 1 AS `1` union /* select#6/2 */ select `__6`.`1` AS `1` from (/* select#4/3 Filter Select: select `1` AS `1` */ select 1 AS `1` union /* select#5/3 */ select 1 AS `1`) `__6`) `__7`) `__8`
#
# MDEV-6341: INSERT ... SELECT UNION with parenthesis
#
create table t1 (a int, b int);
insert into t1 (select 1,1 union select 2,2);
select * from t1 order by 1;
a b 11 22
delete from t1;
insert into t1 select 1,1 union select 2,2;
select * from t1 order by 1;
a b 11 22
drop table t1;
CREATE ORREPLACE TABLE t1 AS SELECT 1 AS a UNION SELECT 2;
select * from t1 order by 1;
a 1 2
drop table t1;
CREATE ORREPLACE TABLE t1 AS (SELECT 1 AS a UNION SELECT 2);
select * from t1 order by 1;
a 1 2
drop table t1;
CREATE ORREPLACE VIEW v1 AS (SELECT 1 AS a);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select 1 AS `a`) latin1 latin1_swedish_ci
drop view v1;
CREATE ORREPLACE VIEW v1 AS SELECT 1 AS a UNION SELECT 2;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `a` union select 2 AS `2` latin1 latin1_swedish_ci
drop view v1;
CREATE ORREPLACE VIEW v1 AS (SELECT 1 AS a UNION SELECT 2);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `a` union select 2 AS `2` latin1 latin1_swedish_ci
drop view v1;
#
# MDEV-10028: Syntax error on ((SELECT ...) UNION (SELECT ...))
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
INSERT INTO t1 VALUES (20);
INSERT INTO t1 VALUES (30);
((SELECT a FROM t1) UNION (SELECT a FROM t1));
a 10 20 30
(SELECT * FROM t1 UNION SELECT * FROM t1);
a 10 20 30
((SELECT a FROM t1) LIMIT 1);
a 10
SELECT * FROM (SELECT 1 UNION (SELECT 2 UNION SELECT 3)) t1; 1 1 2 3
DROP TABLE t1;
#
# test of several levels of ORDER BY / LIMIT
#
create table t1 (a int, b int);
insert into t1 (a,b) values (1, 100), (2, 200), (3,30), (4,4);
select a,b from t1 order by 1 limit 3;
a b 1100 2200 330
(select a,b from t1 order by 1 limit 3) order by 2 limit 2;
a b 330 1100
(select 10,1000 union select a,b from t1 order by 1 limit 3) order by 2 limit 2; 101000 330 1100
((select a,b from t1 order by 1 limit 3) order by 2 limit 2) order by 1 limit 1;
a b 1100
((select a,b from t1 order by 1 limit 3) order by 2 limit 2) order by 1;
a b 1100 330
drop table t1;
#
# MDEV-16359: union with 3 selects in brackets
#
select 1 union select 1 union select 1; 1 1
(select 1 union select 1 union select 1); 1 1
((select 1) union (select 1) union (select 1)); 1 1
#
# MDEV-16357: union in brackets with tail
# union with tail in brackets
#
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES(1),(2),(3),(4);
CREATE TABLE t2 (a int);
INSERT INTO t2 VALUES (4),(5),(6),(7);
(SELECT a FROM t1 UNION SELECT a FROM t2) LIMIT 1;
a 1
(SELECT a FROM t1 UNION SELECT a FROM t2) ORDER BY a DESC;
a 7 6 5 4 3 2 1
(SELECT a FROM t1 UNION SELECT a FROM t2 LIMIT 1);
a 1
DROP TABLE t1,t2;
#
# MDEV-19324: ((SELECT ...) ORDER BY col ) LIMIT n
#
create table t1 (a int);
insert into t1 values (10),(20),(30);
select a from t1 order by a desc limit 1;
a 30
explain extended select a from t1 order by a desc limit 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3100.00 Using filesort
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` order by `test`.`t1`.`a` desc limit 1
explain format=json select a from t1 order by a desc limit 1;
EXPLAIN
{ "query_block": { "select_id": 1, "cost": "COST_REPLACED", "nested_loop": [
{ "read_sorted_file": { "filesort": { "sort_key": "t1.a desc", "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 3, "cost": "COST_REPLACED", "filtered": 100
}
}
}
}
]
}
}
(select a from t1 order by a desc) limit 1;
a 30
explain extended (select a from t1 order by a desc) limit 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3100.00 Using filesort
Warnings:
Note 1003 (select `test`.`t1`.`a` AS `a` from `test`.`t1` order by `test`.`t1`.`a` desc limit 1)
explain format=json (select a from t1 order by a desc) limit 1;
EXPLAIN
{ "query_block": { "select_id": 1, "cost": "COST_REPLACED", "nested_loop": [
{ "read_sorted_file": { "filesort": { "sort_key": "t1.a desc", "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 3, "cost": "COST_REPLACED", "filtered": 100
}
}
}
}
]
}
}
(select a from t1 where a=20 union select a from t1) order by a desc limit 1;
a 30
explain extended (select a from t1 where a=20 union select a from t1) order by a desc limit 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 3100.00 Using where 2 UNION t1 ALL NULL NULL NULL NULL 3100.00
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL Using filesort
Warnings:
Note 1003/* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 20 union /* select#2 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` order by `a` desc limit 1
explain format=json (select a from t1 where a=20 union select a from t1) order by a desc limit 1;
EXPLAIN
{ "query_block": { "union_result": { "table_name": "<union1,2>", "access_type": "ALL", "query_specifications": [
{ "query_block": { "select_id": 1, "cost": "COST_REPLACED", "nested_loop": [
{ "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 3, "cost": "COST_REPLACED", "filtered": 100, "attached_condition": "t1.a = 20"
}
}
]
}
},
{ "query_block": { "select_id": 2, "operation": "UNION", "cost": "COST_REPLACED", "nested_loop": [
{ "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 3, "cost": "COST_REPLACED", "filtered": 100
}
}
]
}
}
]
}
}
}
((select a from t1 where a=20 union select a from t1) order by a desc) limit 1;
a 30
explain extended ((select a from t1 where a=20 union select a from t1) order by a desc) limit 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 3100.00 Using where 2 UNION t1 ALL NULL NULL NULL NULL 3100.00
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL Using filesort
Warnings:
Note 1003/* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 20 union /* select#2 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` order by `a` desc limit 1
explain format=json ((select a from t1 where a=20 union select a from t1) order by a desc) limit 1;
EXPLAIN
{ "query_block": { "union_result": { "table_name": "<union1,2>", "access_type": "ALL", "query_specifications": [
{ "query_block": { "select_id": 1, "cost": "COST_REPLACED", "nested_loop": [
{ "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 3, "cost": "COST_REPLACED", "filtered": 100, "attached_condition": "t1.a = 20"
}
}
]
}
},
{ "query_block": { "select_id": 2, "operation": "UNION", "cost": "COST_REPLACED", "nested_loop": [
{ "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 3, "cost": "COST_REPLACED", "filtered": 100
}
}
]
}
}
]
}
}
}
drop table t1;
#
# MDEV-19363: ((SELECT ...) ORDER BY col ) LIMIT n UNION ...
#
create table t1 (pk int);
insert into t1 values (5),(4),(1),(2),(3);
((select * from t1 order by pk) limit 2) union (select * from t1 where pk > 4);
pk 1 2 5
explain extended ((select * from t1 order by pk) limit 2) union (select * from t1 where pk > 4);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 5100.00 Using filesort 2 UNION t1 ALL NULL NULL NULL NULL 5100.00 Using where
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL NULL
Warnings:
Note 1003 (/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` order by `test`.`t1`.`pk` limit 2) union (/* select#2 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` where `test`.`t1`.`pk` > 4)
explain format=json ((select * from t1 order by pk) limit 2) union (select * from t1 where pk > 4);
EXPLAIN
{ "query_block": { "union_result": { "table_name": "<union1,2>", "access_type": "ALL", "query_specifications": [
{ "query_block": { "select_id": 1, "cost": "COST_REPLACED", "nested_loop": [
{ "read_sorted_file": { "filesort": { "sort_key": "t1.pk", "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 5, "cost": "COST_REPLACED", "filtered": 100
}
}
}
}
]
}
},
{ "query_block": { "select_id": 2, "operation": "UNION", "cost": "COST_REPLACED", "nested_loop": [
{ "table": { "table_name": "t1", "access_type": "ALL", "loops": 1, "rows": 5, "cost": "COST_REPLACED", "filtered": 100, "attached_condition": "t1.pk > 4"
}
}
]
}
}
]
}
}
}
drop table t1;
#
# MDEV-18689: parenthesis around table names and derived tables
#
select * from ( mysql.db );
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv Delete_history_priv Show_create_routine_priv
create table t1 (a int);
insert into t1 values (7), (2), (7);
select * from (t1);
a 7 2 7
select * from ((t1));
a 7 2 7
select * from (t1 t) where t.a > 5;
a 7 7
select * from ((t1 t)) where t.a > 5;
a 7 7
select * from ((select a, sum(a) from t1 group by a) t);
a sum(a) 22 714
select * from (((select a, sum(a) from t1 group by a) t));
a sum(a) 22 714
update (t1 t) set t.a=t.a+1;
select * from t1;
a 8 3 8
drop table t1;
#
# MDEV-19956: query expressions in different contexts
#
create table t1 (a int);
insert into t1 values (3), (7), (1), (2), (4);
create table t2 (a int, b int);
insert into t2 values (3,30), (7,70), (1,10), (2,20), (4,40);
# 1. select
# 1.1. simple select
select * from t1;
a 3 7 1 2 4
(select * from t1);
a 3 7 1 2 4
((select * from t1));
a 3 7 1 2 4
# 1.2. select with tail
select * from t1 order by a;
a 1 2 3 4 7
select a from t1 order by a;
a 1 2 3 4 7
select a from t1 order by 1;
a 1 2 3 4 7
select * from t1 order by t1.a;
a 1 2 3 4 7
(select * from t1 order by t1.a);
a 1 2 3 4 7
((select * from t1 order by t1.a));
a 1 2 3 4 7
(select * from t1 order by t1.a limit 2);
a 1 2
(select a from t1 where a=1) order by 1 desc;
a 1
# 1.2. select with several tails
(select * from t2 order by a limit 2) order by b desc;
a b 220 110
(select * from t2 order by t2.a limit 2) order by b desc;
a b 220 110
((select * from t2 order by t2.a limit 2) order by b desc);
a b 220 110
(((select * from t2 order by t2.a) limit 2) order by b desc);
a b 220 110
# 2. union
# 2.1 simple union
select a from t1 union select a from t1;
a 3 7 1 2 4
select a from t1 union all select a from t1;
a 3 7 1 2 4 3 7 1 2 4
select a from t1 union select b from t2;
a 3 7 1 2 4 30 70 10 20 40
(select a from t1) union (select a from t1);
a 3 7 1 2 4
(select a from t1) union (select b from t2);
a 3 7 1 2 4 30 70 10 20 40
select a from t1 where a=1 union select a from t1 where a=3;
a 1 3
(select a from t1 where a=1) union select a from t1 where a=3;
a 1 3
((select a from t1 where a=1) union select a from t1 where a=3);
a 1 3
((select a from t1 where a<=3) union (select a from t1 where a=3));
a 3 1 2
select a from t1 where a=1 union (select a from t1 where a=3);
a 1 3
(select a from t1 where a=1 union (select a from t1 where a=3));
a 1 3
((select a from t1 where a=1 union (select a from t1 where a=3)));
a 1 3
select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=7;
a 1 3 7
( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=7 );
a 1 3 7
(select a from t1 where a=1 order by a) union select a from t1 where a=3;
a 1 3
(select a from t1 where a!=3 order by a desc) union select a from t1 where a=3;
a 7 1 2 4 3
((select a from t1 where a=1 order by a) union select a from t1 where a=3);
a 1 3
(select a from t1 where a!=3 order by a desc) union select a from t1 where a=3;
a 7 1 2 4 3
( ( select a from t1 where a!=3 order by a desc limit 3)
union
select a from t1 where a=3 );
a 7 4 2 3
( select a from t1 where a <=3 except select a from t1 where a >=3 )
union
select a from t1 where a=7;
a 1 2 7
( ( select a from t1 where a <=3
except
select a from t1 where a >=3 )
union
select a from t1 where a=7 );
a 1 2 7
( select a from t1 where a <=3
except
( select a from t1 where a >=3
union
select a from t1 where a=7 ) );
a 1 2
( ( select a from t1 where a <=3 )
except
( select a from t1 where a >=3
union
select a from t1 where a=7 ) );
a 1 2
# 2.2. union with tail
select a from t1 where a=1 union select a from t1 where a=3 order by a desc;
a 3 1
(select a from t1 limit 2) union select a from t1 where a=3 order by a desc;
a 7 3
select a from t1 where a=4 union (select a from t1 where a <=4 limit 2)
order by a desc;
a 4 3 1
select a from t1 where a=4
union
(select a from t1 where a <=4 order by a limit 2)
order by a desc;
a 4 2 1
( select a from t1 where a=4
union
( select a from t1 where a <=4 order by a limit 2 ) )
order by a desc;
a 4 2 1
( select a from t1 where a <=3 except select a from t1 where a >=3 )
union
select a from t1 where a=7 order by a desc;
a 7 2 1
( select a from t1 where a!=3 order by a desc )
union
select a from t1 where a=3
order by a desc;
a 7 4 3 2 1
(select a from t1 where a=1)
union
(select a from t1 where a=3)
order by a desc;
a 3 1
( select a from t1 where a=1
union
select a from t1 where a=3 )
order by a desc;
a 3 1
( ( select a from t1 where a=1 )
union
( select a from t1 where a=3 ) )
order by a desc;
a 3 1
( select a from t1 where a=1
union
select a from t1 where a=3 )
order by 1 desc;
a 3 1
((select a from t1 where a=1 union select a from t1 where a=3)) order by 1 desc;
a 3 1
(((select a from t1 where a=1) union (select a from t1 where a=3)))
order by 1 desc;
a 3 1
( (select a from t1 where a=1 )
union
(select a from t1 where a=3) )
order by 1 desc;
a 3 1
# 2.3. complex union
select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2
union
select a from t1 where a=4;
a 1 3 2 4
( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2 )
union
select a from t1 where a=4;
a 1 3 2 4
(select a from t1 where a=1 union select a from t1 where a=3)
union
(select a from t1 where a=2 union select a from t1 where a=4);
a 1 3 2 4
(select a from t1 where a=1 union (select a from t1 where a=3))
union
((select a from t1 where a=2) union select a from t1 where a=4);
a 1 3 2 4
( ( select a from t1 where a=1)
union
select a from t1 where a=3 )
union
select a from t1 where a=2
union
select a from t1 where a=4;
a 1 3 2 4
( ( ( select a from t1 where a=1)
union
select a from t1 where a=3 )
union
select a from t1 where a=2 )
union
select a from t1 where a=4;
a 1 3 2 4
select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2
union
(select a from t1 where a=4);
a 1 3 2 4
select a from t1 where a=1
union
select a from t1 where a=3
union
( select a from t1 where a=2
union
( select a from t1 where a=4 ) );
a 1 3 2 4
select a from t1 where a=1
union
( select a from t1 where a=3
union
( select a from t1 where a=2
union
( select a from t1 where a=4 ) ) );
a 1 3 2 4
# 2.4. complex union with tail
( ( select a from t1 where a=1 union select a from t1 where a=3 )
order by a desc )
union
( ( select a from t1 where a=2 union select a from t1 where a=4 )
order by a desc );
a 3 1 4 2
( ( select a from t1 where a=1 union select a from t1 where a=3 )
order by a desc )
union
( ( select a from t1 where a=2 union select a from t1 where a=4 )
order by a desc )
order by a;
a 1 2 3 4
( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2 order by a desc limit 2 )
union
select a from t1 where a=4
order by a;
a 2 3 4
( select a from t1 where a=1
union
select a from t1 where a=3 order by a desc )
union
select a from t1 where a=2 order by a desc limit 2;
a 3 2
( ( select a from t1 where a >= 2
union
select a from t1 where a=1 order by a desc limit 2 )
union
select a from t1 where a=3 order by a limit 2 )
union
select a from t1 where a=1;
a 3 4 1
# 3. TVC
# 3.1. simple TVC
values (3), (7), (1); 3 3 7 1
(values (3), (7), (1)); 3 3 7 1
((values (3), (7), (1))); 3 3 7 1
# 3.2. simple TVC with tail(s)
values (3), (7), (1) order by 1; 3 1 3 7
(values (3), (7), (1)) order by 1; 3 1 3 7
((values (3), (7), (1))) order by 1; 3 1 3 7
(((values (3), (7), (1))) order by 1); 3 1 3 7
(values (3), (7), (1) limit 2) order by 1 desc; 3 7 3
((values (3), (7), (1)) order by 1 desc) limit 2; 3 7 3
(((values (3), (7), (1)) order by 1 desc) limit 2); 3 7 3
# 3.3. union of TVCs
values (3), (7), (1) union values (3), (4), (2); 3 3 7 1 4 2
values (3), (7), (1) union all values (3), (4), (2); 3 3 7 1 3 4 2
values (3), (7), (1) union values (3), (4), (2); 3 3 7 1 4 2
values (3), (7), (1) except values (3), (4), (2); 3 7 1
(values (3), (7), (1)) union (values (3), (4), (2)); 3 3 7 1 4 2
(values (3), (7), (1)) union (values (3), (4), (2)) union values (5), (7); 3 3 7 1 4 2 5
(values (3), (7), (1)) union (values (3), (4), (2)) union (values (5), (7)); 3 3 7 1 4 2 5
(values (3), (7), (1) union values (3), (4), (2)) union values (5), (7); 3 3 7 1 4 2 5
values (3), (7), (1) union (values (3), (4), (2) union values (5), (7)); 3 3 7 1 4 2 5
(values (3), (7), (1) union ((values (3), (4), (2) union values (5), (7)))); 3 3 7 1 4 2 5
# 3.4. tailed union of TVCs
values (3), (7), (1) union values (3), (4), (2) order by 1; 3 1 2 3 4 7
(values (3), (7), (1) union values (3), (4), (2)) order by 1; 3 1 2 3 4 7
(values (3), (7), (1) union values (3), (4), (2)) order by 1; 3 1 2 3 4 7
values (3), (7), (1) union (values (3), (4), (2)) order by 1; 3 1 2 3 4 7
(values (3), (7), (1) union values (3), (4), (2)) order by 1; 3 1 2 3 4 7
((values (3), (7), (1)) union values (3), (4), (2)) order by 1; 3 1 2 3 4 7
# 3.5. union of tailed TVCs
(values (3), (7), (1) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2); 3 1 3 4
((values (3), (7), (1) order by 1) limit 2)
union
((values (3), (4), (2) order by 1 desc) limit 2); 3 1 3 4
(((values (3), (7), (1)) order by 1) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2); 3 1 3 4
# 3.6. tailed union of tailed TVCs
(values (3), (7), (1) order by 1 limit 2)
union
values (3), (4), (2)
order by 1; 3 1 2 3 4
((values (3), (7), (1)) order by 1 limit 2)
union
((values (3), (4), (2) order by 1 desc) limit 2)
order by 1; 3 1 3 4
# 3.7 [tailed] union of [tailed] select and [tailed] TVC
(select a from t1 where a <=3 order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2);
a 1 2 4 3
((select a from t1 where a <=3) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2);
a 1 2 4 3
(((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2);
a 1 2 4 3
( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) );
a 1 2 4 3
(select a from t1 where a <=3 order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2)
order by a;
a 1 2 3 4
((select a from t1 where a <=3) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2)
order by a;
a 1 2 3 4
(((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2)
order by a;
a 1 2 3 4
(((values (3), (4), (2)) order by 1 desc) limit 2); 3 4 3
( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) )
order by a;
a 1 2 3 4
(values (3), (4), (2) order by 1 desc limit 2)
union
(select a from t1 where a <=3 order by 1 limit 2); 3 4 3 1 2
(values (3), (4), (2) order by 1 desc limit 2)
union
((select a from t1 where a <=3) order by 1 limit 2); 3 4 3 1 2
(((values (3), (4), (2)) order by 1 desc) limit 2)
union
(((select a from t1 where a <=3) order by 1) limit 2); 3 4 3 1 2
(((values (3), (4), (2)) order by 1 desc) limit 2)
union
(((select a from t1 where a <=3) order by a) limit 2)
order by 1; 3 1 2 3 4
( select a from t1 where a=1
union
values (3), (4), (2) order by 1 desc )
union
select a from t1 where a=2 order by a desc limit 3;
a 4 3 2 4. CTE 4.1. simple select with simple CTE
with t as (select * from t1 where a <=3)
select * from t;
a 3 1 2
with t as (select * from t1 where a <=3)
(select * from t);
a 3 1 2
with t as (select * from t1 where a <=3)
((select * from t));
a 3 1 2
with t as ((select * from t1 where a <=3))
select * from t;
a 3 1 2
with t as (((select * from t1 where a <=3)))
select * from t;
a 3 1 2 4.2. tailed select with simple CTE
with t as (select * from t1 where a <=3)
select * from t order by a;
a 1 2 3
with t as (select * from t1 where a <=3)
(select * from t) order by a;
a 1 2 3
with t as (select * from t1 where a <=3)
(select * from t) order by a desc limit 2;
a 3 2 4.3. [tailed] select with tailed CTE
with t as (select * from t1 where a >=2 order by a limit 2)
select * from t;
a 2 3
with t as (((select * from t1 where a >=2) order by a desc) limit 2)
select * from t;
a 7 4
with t as (select * from t1 where a >=2 order by a desc limit 2)
select * from t order by a;
a 4 7 4.4. [tailed] union with CTE
with t as (select * from t1 where a <=3)
select a from t1 where a=1 union select a from t where a=3;
a 1 3
with t as (select * from t1 where a <=3)
(select a from t) union (select b from t2);
a 3 1 2 30 70 10 20 40
with t as (select * from t1 where a <=3)
(select a from t) union (select b as a from t2) order by a desc;
a 70 40 30 20 10 3 2 1 4.5. [tailed] union with [tailed] union in CTE
with t as (select * from t1 where a < 3 union select * from t1 where a > 3)
select a from t1 where a=1 union select a from t where a=7;
a 1 7
with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7;
a 4 7
with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 order by a desc;
a 7 4
with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 order by a desc;
a 7 4
with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
(select a from t1 where a=4 union select a from t where a=7 order by a desc);
a 7 4
with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
((select a from t1 where a=4 union select a from t where a=7) order by a desc);
a 7 4
with t as
( select * from t1 where a < 3
union
values (4), (7)
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 order by a desc;
a 7 4 4.6. [tailed] union with [tailed] union of TVC in CTE
with t(a) as
( values (2), (1)
union
(values (4), (7))
order by 1 desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 order by a desc;
a 7 4
with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc)
order by 1 desc limit 3 )
select a from t1 where a=1 union select a from t where a=7 order by a desc;
a 7 1
with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc)
order by 1 limit 3 )
select a from t where a=1 union values (7) order by a desc;
a 7 1
with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc ) )
select a from t where a=1 union select 7 order by a desc;
a 7 1 4.5. [tailed] union with two CTEs
with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
select a from t where a=1 union select a from s where a=7 order by a desc;
a 7 1
with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
(select a from t where a=1 union select a from s where a=7 order by a desc);
a 7 1
with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
(select a from t where a=1 union select a from s where a=7) order by a desc;
a 7 1
with t as (select * from t1 where a < 3),
s as (select * from t where a > 3)
select a from t where a=1 union select a from s where a=7 order by a desc;
a 1
# 5. single-row subquery in expression
# 5.1. [tailed] simple select in expression
select (a+1) + b as r from t2;
r 34 78 12 23 45
select ((a+1) + b) as r from t2;
r 34 78 12 23 45
select (b + (select 1)) as r from t2;
r 31 71 11 21 41
select (select a from t1 where a <=3 order by a desc limit 1) as r from t2;
r 3 3 3 3 3
select
(select a from t1 where a <=3 order by a desc limit 1) as r from t2;
r 3 3 3 3 3
select (select 100) as r from t2;
r 100 100 100 100 100
select ((select 100)) as r from t2;
r 100 100 100 100 100
select (select 100) + t2.b as r from t2;
r 130 170 110 120 140
select ((select 100) + t2.b) as r from t2;
r 130 170 110 120 140
# 5.2. [tailed] TVC in expression
select (values (200)) as r from t2;
r 200 200 200 200 200
select ((values (200))) as r from t2;
r 200 200 200 200 200
select (values (200)) + t2.b as r from t2;
r 230 270 210 220 240
select ((values (200)) + t2.b) as r from t2;
r 230 270 210 220 240
select (values (200), (300) order by 1 desc limit 1) as r from t2;
r 300 300 300 300 300
select ((values (200), (300)) order by 1 desc limit 1) as r from t2;
r 300 300 300 300 300
select (select * from t1 limit 1) as r from t2;
r 3 3 3 3 3
select (select * from t1 order by a limit 1) as r from t2;
r 1 1 1 1 1
select ((select * from t1 order by a limit 1)) as r from t2;
r 1 1 1 1 1
((select ((select * from t1 order by a limit 1)) as r from t2));
r 1 1 1 1 1
select (select * from t1 order by a limit 1) + t2.b as r from t2;
r 31 71 11 21 41
# 5.3. [tailed] union in expression
select
( select a from t1 where a<3 union select a from t1 where a>4
order by a desc limit 1 ) as r
from t1;
r 7 7 7 7 7
select
( (select a from t1 where a<3) union (select a from t1 where a>4)
order by a desc limit 1 ) as r
from t1;
r 7 7 7 7 7
select
( select a from t1 where a<3 union select a from t1 where a>4
order by a desc limit 1 ) + t1.a as r
from t1;
r 10 14 8 9 11
select
t1.a +
( select a from t1 where a<3 union select a from t1 where a>4
order by a desc limit 1 ) as r
from t1;
r 10 14 8 9 11
select
( (select a from t1 where a<3 union select a from t1 where a>4
order by a desc limit 1 ) + t1.a) as r
from t1;
r 10 14 8 9 11
select
( ( (select a from t1 where a<3) union (select a from t1 where a>4)
order by a desc limit 1 ) + t1.a ) as r
from t1;
r 10 14 8 9 11
# 5.4. [tailed] select with simple CTE in expression
select
( with t as (select * from t1 where a <=3)
select a from t limit 1) as r
from t2;
r 3 3 3 3 3
select
( with t as (select * from t1 where a <=3)
select a from t limit 1) + t2.b as r
from t2;
r 33 73 13 23 43
select
t2.b +( with t as (select * from t1 where a <=3)
select a from t limit 1) as r
from t2;
r 33 73 13 23 43
select
((( with t as (select * from t1 where a <=3)
select a from t limit 1) + t2.b)) as r
from t2;
r 33 73 13 23 43
select
( with t as (select * from t1 where a <=3)
select a from t limit 1) + 100 as r
from t2;
r 103 103 103 103 103
select
( with t as (select * from t1 where a <=3)
select a from t limit 1) + (select 100) as r
from t2;
r 103 103 103 103 103
select
( with t as (select * from t1 where a <=3)
select a from t limit 1) + t2.b + (select 100) as r
from t2;
r 133 173 113 123 143
select
( with t as (select * from t1 where a <=3)
select a from t limit 1 ) + (t2.b + (select 100)) as r
from t2;
r 133 173 113 123 143
select
( with t as (select * from t1 where a <=3)
select a from t limit 1 ) + t2.b + (values (100)) as r
from t2;
r 133 173 113 123 143
# 5.5. [tailed] union with simple CTE in expression
select
( with t as (select * from t1 where a <=3)
select a from t union select b from t2 order by a desc limit 1) as r
from t2;
r 70 70 70 70 70
select
( with t as (select * from t1 where a <=3)
(select a from t) union (select b from t2) order by a desc limit 1) as r
from t2;
r 70 70 70 70 70
select
( with t as (select * from t1 where a <=3)
(select a from t) union (select b from t2) order by a desc limit 1) as r
from t2;
r 70 70 70 70 70
select
( ( with t as (select * from t1 where a <=3)
(select a from t) union (select b from t2) order by a desc limit 1) +
t2.a ) as r
from t2;
r 73 77 71 72 74
# 5.6. [tailed] union with CTE with union in expression
select
( with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 limit 1) as r
from t2;
r 4 4 4 4 4
select
( with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 limit 1) +
t2. b as r
from t2;
r 34 74 14 24 44
# 5.7. [tailed] union of TVCs with CTE with union in expression
select
( with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 limit 1)
order by 1 desc limit 3 ) select * from t limit 1 ) + t2.b as r
from t2;
r 34 74 14 24 44
select
( with t(a) as
( select 2 union select 1
union
(values (4), (7) order by 1 limit 1)
order by 1 limit 3 ) select * from t limit 1 ) + t2.b as r
from t2;
r 31 71 11 21 41
# 6. subquery
# 6.1. TVC in IN subquery
select a from t1 where a in (1,8,7);
a 7 1
select a from t1 where a in (values (1), (8), (7));
a 7 1
# 6.2. simple select in IN subquery
select a from t1 where a in (select a from t2 where a <= 3);
a 3 1 2
select a from t1 where a in ((select a from t2 where a <= 3));
a 3 1 2
# 6.3. union in IN subquery
select a from t1
where a in (select a from t1 where a<=2 union select a from t2 where b>40);
a 7 1 2
select a from t1
where a in (select a from t1 where a<=2 union (select a from t2 where b>40));
a 7 1 2
select a from t1
where a in ((select a from t1 where a<=2) union select a from t2 where b>40);
a 7 1 2
select a from t1
where a in ((select a from t1 where a<=2) union (select a from t2 where b>40));
a 7 1 2
# 6.4. select with CTE and union in IN subquery
with t as (select a from t1 where a<=2)
select a from t1
where a in ((select a from t) union (select a from t2 where b>40));
a 7 1 2
with t as ((select a from t1 where a<=2))
select a from t1
where a in ((select a from t) union (select a from t2 where b>40));
a 7 1 2
with t as ((select a from t1 where a<=2) order by a desc limit 1)
select a from t1
where a in ((select a from t) union (select a from t2 where b>40));
a 7 2
# 6.5. NOT IN subquery
select a from t1 where a not in (1,8,7);
a 3 2 4
select a from t1 where a not in (values (1), (8), (7));
a 3 2 4
select a from t1 where a not in (select a from t2 where a <= 3);
a 7 4
select a from t1 where a not in ((select a from t2 where a <= 3));
a 7 4
select a from t1
where a not in (select a from t1 where a<=2
union
select a from t2 where b>40);
a 3 4
select a from t1
where a not in (select a from t1 where a<=2
union
(select a from t2 where b>40));
a 3 4
select a from t1
where a not in ((select a from t1 where a<=2)
union
select a from t2 where b>40);
a 3 4
select a from t1
where a not in ((select a from t1 where a<=2)
union
(select a from t2 where b>40));
a 3 4
with t as ((select a from t1 where a<=2) order by a desc limit 1)
select a from t1
where a not in ((select a from t) union (select a from t2 where b>40));
a 3 1 4
# 6.6. IN subquery in expression
select 1 in (select a from t1) as r, b from t2 where b > 30;
r b 170 140
select (1 in (select a from t1)) as r, b from t2 where b > 30;
r b 170 140
select 1 in ((select a from t1)) as r, b from t2 where b > 30;
r b 170 140
select ((1 in ((select a from t1)))) as r, b from t2 where b > 30;
r b 170 140
select ((1 in ((select a from t1)))) as r, b from t2 where b > 30;
r b 170 140
select b, if (a in (select a from t1 where a > 3),10,20) as r from t2;
b r 3020 7010 1020 2020 4010
select b, if (a in ((select a from t1 where a > 3)),10,20) as r from t2;
b r 3020 7010 1020 2020 4010
# 6.7. IN subquery in SF and SP
create function f1(x int) returns int return (x in ((select a from t1 where a <= 4)));
select b, f1(a) from t2 where b > 20;
b f1(a) 301 700 401
drop function f1;
create function f2(x int) returns int if x in ((select a from t1 where a <= 4))
then return100;
else return200;
end if |
select b, f2(a) from t2 where b > 20;
b f2(a) 30100 70200 40100
drop function f2;
# 6.8. EXISTS subquery
select exists (select a from t1 where t1.a=t2.a) as r, b from t2 where b > 30;
r b 170 140
select exists ((select a from t1 where t1.a=t2.a)) as r, b from t2 where b > 30;
r b 170 140
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from t2 where exists ((select * from s where s.a=t2.a));
a b 330 770 440
with t as ((select a from t1 where a<=2) order by a desc limit 1)
select a from t2
where not exists ((select a from t where t.a=t2.a)
except
(select a from t where a>40));
a 3 7 1 4
# 6.9. EXISTS subquery with SF and SP
create function f1(x int) returns int return exists (((select * from t1 where x=a and a <= 4)));
select b, f1(a) from t2 where b > 20;
b f1(a) 301 700 401
drop function f1;
create function f2(x int) returns int ifnot exists (((select * from t1 where x=a and a <= 4)))
then return100;
else return200;
end if |
select b, f2(a) from t2 where b > 20;
b f2(a) 30200 70100 40200
drop function f2;
# 6.10. subquery with ANY
select a from t1 where a = any(select a from t2 where a <= 3);
a 3 1 2
select a from t1 where a = any((select a from t2 where a <= 3));
a 3 1 2
select a from t1
where a = any (select a from t1 where a<=2
union
select a from t2 where b>40);
a 7 1 2
select a from t1
where a = any(select a from t1 where a<=2
union
(select a from t2 where b>40));
a 7 1 2
select a from t1
where a = any((select a from t1 where a<=2)
union
select a from t2 where b>40);
a 7 1 2
select a from t1
where a = any((select a from t1 where a<=2)
union
(select a from t2 where b>40));
a 7 1 2
# 7. create table as
# 7.1. create table as simple select
create table t as select * from t1 where a <=3;
select * from t;
a 3 1 2
drop table t;
create table t select * from t1 where a <=3;
select * from t;
a 3 1 2
drop table t;
create table t as (select * from t1 where a <=3);
select * from t;
a 3 1 2
drop table t;
create table t (select * from t1 where a <=3);
select * from t;
a 3 1 2
drop table t;
create table t as ((select * from t1 where a <=3));
select * from t;
a 3 1 2
drop table t;
create table t ((select * from t1 where a <=3));
select * from t;
a 3 1 2
drop table t;
create table t(a decimal(10,2)) as select * from t1 where a <=3;
select * from t;
a 3.00 1.00 2.00
drop table t;
create table t(a decimal(10,2)) select * from t1 where a <=3;
select * from t;
a 3.00 1.00 2.00
drop table t;
create table t(a decimal(10,2)) as (select * from t1 where a <=3);
select * from t;
a 3.00 1.00 2.00
drop table t;
create table t(a decimal(10,2)) (select * from t1 where a <=3);
select * from t;
a 3.00 1.00 2.00
drop table t;
create table t(a decimal(10,2)) as ((select * from t1 where a <=3));
select * from t;
a 3.00 1.00 2.00
drop table t;
create table t(a decimal(10,2)) ((select * from t1 where a <=3));
select * from t;
a 3.00 1.00 2.00
drop table t;
create table t(a decimal(10,2), b int) as
((select a, a as b from t1 where a <=3));
select * from t;
a b 3.003 1.001 2.002
drop table t;
create table t(a decimal(10,2), b int)
((select a, a as b from t1 where a <=3));
select * from t;
a b 3.003 1.001 2.002
drop table t;
# 7.2. create table as tailed select
create table t as select * from t1 where a <=3 order by 1;
select * from t;
a 1 2 3
drop table t;
create table t select * from t1 where a <=3 order by 1;
select * from t;
a 1 2 3
drop table t;
create table t as select * from t1 where a <=3 order by 1 desc limit 2;
select * from t;
a 3 2
drop table t;
create table t select * from t1 where a <=3 order by 1 desc limit 2;
select * from t;
a 3 2
drop table t;
create table t as ((select * from t1 where a <=3) order by 1 desc) limit 2;
select * from t;
a 3 2
drop table t;
create table t ((select * from t1 where a <=3) order by 1 desc) limit 2;
select * from t;
a 3 2
drop table t;
# 7.3. create table as select wihout from clause
create table t as select 10;
select * from t; 10 10
drop table t;
create table t select 10;
select * from t; 10 10
drop table t;
# 7.4. create table as union of selects wihout from clause
create table t as select 10 union select 70;
select * from t; 10 10 70
drop table t;
create table t select 10 union select 70;
select * from t; 10 10 70
drop table t;
# 7.5. create table as TVC
create table t as values (7), (3), (8);
select * from t; 7 7 3 8
drop table t;
create table t values (7), (3), (8);
select * from t; 7 7 3 8
drop table t;
create table t as (values (7), (3), (8));
select * from t; 7 7 3 8
drop table t;
create table t (values (7), (3), (8));
select * from t; 7 7 3 8
drop table t;
create table t as ((values (7), (3), (8)));
select * from t; 7 7 3 8
drop table t;
create table t ((values (7), (3), (8)));
select * from t; 7 7 3 8
drop table t;
# 7.6. create table as select with CTE
create table t as
with s(a) as (select * from t1 where a <=3 order by 1 desc limit 2)
select * from s;
select * from t;
a 3 2
drop table t;
create table t
with s(a) as (select * from t1 where a <=3 order by 1 desc limit 2)
select * from s;
select * from t;
a 3 2
drop table t;
create table t as
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s;
select * from t;
a 4 3 8 7
drop table t;
create table t
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s;
select * from t;
a 4 3 8 7
drop table t;
create table t as
with s(a) as (select * from t1 where a <=3 order by 1 desc limit 2)
select * from s;
select * from t;
a 3 2
drop table t;
# 7.7. create table as union with CTE
create table t as
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select a from t2 where b<40;
select * from t;
a 8 7 3 1 2
drop table t;
create table t
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select a from t2 where b<40;
select * from t;
a 8 7 3 1 2
drop table t;
create table t
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select a from t2 where b<40;
select * from t;
a 8 7 3 1 2
drop table t;
create table t as
with s as
( ( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) ) )
select * from s where a>=7 union select a from t2 where b<40;
select * from t;
a 8 7 3 1 2
drop table t;
create table t
with s as
( ( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) ) )
select * from s where a>=7 union select a from t2 where b<40;
select * from t;
a 8 7 3 1 2
drop table t;
create table t as
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select a from s where a<4;
select * from t;
a 8 7 3
drop table t;
create table t
with s as
( (select * from t1 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select a from s where a<4;
select * from t;
a 8 7 3
drop table t;
create table t as
with s as
( select * from t1 where a <=4or a=7 )
select * from s where a>=7 union select a from s where a<3;
select * from t;
a 7 1 2
drop table t;
create table t
with s as
(select * from t1 where a <=4or a=7)
select * from s where a>=7 union select a from s where a<3;
select * from t;
a 7 1 2
drop table t;
create table t (a int)
with s as
( select * from t1 where a <=4or a=7 )
select * from s where a>=7 union select a from s where a<3;
select * from t;
a 7 1 2
drop table t;
create table t (a int)
with s as
(select * from t1 where a <=4or a=7)
select * from s where a>=7 union select a from s where a<3;
select * from t;
a 7 1 2
drop table t;
create table t
with s as
( select * from t1 where a <=4or a=7 )
select * from s where a>=7 union select a from s where a<3
order by a desc limit 2;
select * from t;
a 7 2
drop table t;
create table t
( with s as
( select * from t1 where a <=4or a=7 )
select * from s where a>=7 union select a from s where a<3
order by a desc limit 2 );
select * from t;
a 7 2
drop table t;
# 8. insert
create table t (c int, d int);
# 8.1. insert simple select
insert into t select * from t2 where a <=3;
select * from t;
c d 330 110 220
delete from t;
insert into t(c) select t2.a from t2 where a <=3;
select * from t;
c d 3 NULL 1 NULL 2 NULL
delete from t;
insert into t (select * from t2 where a <=3);
select * from t;
c d 330 110 220
delete from t;
insert into t(c) (select t2.a from t2 where a <=3);
select * from t;
c d 3 NULL 1 NULL 2 NULL
delete from t;
insert into t ((select * from t2 where a <=3));
select * from t;
c d 330 110 220
delete from t;
insert into t(c) ((select t2.a from t2 where a <=3));
select * from t;
c d 3 NULL 1 NULL 2 NULL
delete from t;
drop table t;
create table t(c decimal(10,2));
insert into t select * from t1 where a <=3;
select * from t;
c 3.00 1.00 2.00
delete from t;
insert into t(c) select * from t1 where a <=3;
select * from t;
c 3.00 1.00 2.00
delete from t;
insert into t (select * from t1 where a <=3);
select * from t;
c 3.00 1.00 2.00
delete from t;
insert into t(c) (select * from t1 where a <=3);
select * from t;
c 3.00 1.00 2.00
delete from t;
insert into t ((select * from t1 where a <=3));
select * from t;
c 3.00 1.00 2.00
delete from t;
insert into t(c) ((select * from t1 where a <=3));
select * from t;
c 3.00 1.00 2.00
delete from t;
drop table t;
create table t(a decimal(10,2), b int);
insert into t ((select * from t2 where a <=3));
select * from t;
a b 3.0030 1.0010 2.0020
delete from t;
insert into t(a) ((select a from t2 where a <=3));
select * from t;
a b 3.00 NULL 1.00 NULL 2.00 NULL
delete from t;
drop table t;
create table t(c int, d int);
# 8.2. insert tailed select
insert into t select * from t2 where a <=3 order by 1;
select * from t;
c d 110 220 330
delete from t;
insert into t(c) select a from t2 where a <=3 order by 1;
select * from t;
c d 1 NULL 2 NULL 3 NULL
delete from t;
insert into t select * from t2 where a <=3 order by 1 desc limit 2;
select * from t;
c d 330 220
delete from t;
insert into t(c) select a from t2 where a <=3 order by 1 desc limit 2;
select * from t;
c d 3 NULL 2 NULL
delete from t;
insert into t ((select * from t2 where a <=3) order by 1 desc) limit 2;
select * from t;
c d 330 220
delete from t;
insert into t(c) ((select a from t2 where a <=3) order by 1 desc) limit 2;
select * from t;
c d 3 NULL 2 NULL
delete from t;
# 8.3. insert select without from clause
insert into t select 10, 20;
select * from t;
c d 1020
delete from t;
insert into t(c) select 10;
select * from t;
c d 10 NULL
delete from t;
# 8.4. insert union of selects without from clause
insert into t select 10,20 union select 70,80;
select * from t;
c d 1020 7080
delete from t;
insert into t(c) select 10 union select 70;
select * from t;
c d 10 NULL 70 NULL
delete from t;
# 8.5. insert TVC
insert into t values (7,70), (3,30), (8,80);
select * from t;
c d 770 330 880
delete from t;
insert into t(c) values (7), (3), (8);
select * from t;
c d 7 NULL 3 NULL 8 NULL
delete from t;
insert into t (values (7,70), (3,30), (8,80));
select * from t;
c d 770 330 880
delete from t;
insert into t(c) (values (7), (3), (8));
select * from t;
c d 7 NULL 3 NULL 8 NULL
delete from t;
insert into t ((values (7,70), (3,30), (8,80)));
select * from t;
c d 770 330 880
delete from t;
insert into t(c) ((values (7), (3), (8)));
select * from t;
c d 7 NULL 3 NULL 8 NULL
delete from t;
# 8.7. insert simple select with CTE
insert into t
with s(a,b) as (select * from t2 where a <=3 order by 1 desc limit 2)
select * from s;
select * from t;
c d 330 220
delete from t;
insert into t(c)
with s(a) as (select a from t2 where a <=3 order by 1 desc limit 2)
select * from s;
select * from t;
c d 3 NULL 2 NULL
delete from t;
insert into t
with s as
( (select * from t2 where a <=4 order by 1 desc limit 2)
union
values (3,30), (8,80), (7,70) )
select * from s;
select * from t;
c d 440 330 880 770
delete from t;
insert into t(c)
with s as
( (select a from t2 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s;
select * from t;
c d 4 NULL 3 NULL 8 NULL 7 NULL
delete from t;
# 8.8. insert into union with CTE
insert into t(c)
with s as
( (select a from t2 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select a from t2 where b<40;
select * from t;
c d 8 NULL 7 NULL 3 NULL 1 NULL 2 NULL
delete from t;
insert into t
with s as
( (select * from t2 where a <=4 order by 1 desc limit 2)
union
values (3,30), (8,80), (7,70) )
select * from s where a>=7 union select * from s where a<4;
select * from t;
c d 880 770 330
delete from t;
insert into t(c)
with s as
( (select a from t2 where a <=4 order by 1 desc limit 2)
union
values (3), (8), (7) )
select * from s where a>=7 union select * from s where a<4;
select * from t;
c d 8 NULL 7 NULL 3 NULL
delete from t;
insert into t
with s as
( select * from t2 where a <=4or a=7 )
select * from s where a>=7 union select * from s where a<3;
select * from t;
c d 770 110 220
delete from t;
insert into t(c)
with s as
( select a from t2 where a <=4or a=7 )
select * from s where a>=7 union select * from s where a<3;
select * from t;
c d 7 NULL 1 NULL 2 NULL
delete from t;
drop table t;
# 9. derived table
# 9.1. derived table as [tailed] simple select
select * from (select * from t1) as dt;
a 3 7 1 2 4
select * from ((select * from t1)) as dt;
a 3 7 1 2 4
select * from (((select * from t1))) as dt;
a 3 7 1 2 4
select * from (select * from t1 order by a) as dt;
a 3 7 1 2 4
select * from (select a from t1 order by a) as dt;
a 3 7 1 2 4
select * from (select a from t1 order by 1) as dt;
a 3 7 1 2 4
select * from (select a from t1 order by t1.a) as dt;
a 3 7 1 2 4
select * from ((select * from t1 order by t1.a limit 2)) as dt;
a 1 2
select * from ((select * from t2 order by a limit 2) order by b desc) dt;
a b 110 220
select * from ((select a from t1 where a=1) order by 1 desc) dt;
a 1
# 9.2. derived table as select with two tails
select * from
((select * from t2 order by t2.a limit 2) order by b desc) dt;
a b 110 220
select * from
((select * from t2 order by t2.a limit 2) order by b desc) as dt;
a b 110 220
select * from
(((select * from t2 order by t2.a limit 2) order by b desc )) as dt;
a b 110 220
select * from
(((select * from t2 order by t2.a) limit 2) order by b desc) dt;
a b 110 220
select * from
((select * from t2 order by a limit 2) order by b desc) dt;
a b 110 220
select * from
((select a from t1 where a=1) order by 1 desc) as dt;
a 1
select * from
((select * from t2 order by t2.a limit 2) order by b desc) as dt;
a b 110 220
# 9.3. derived table as union
select * from (select a from t1 union select a from t1) as dt;
a 3 7 1 2 4
select * from (select a from t1 union all select a from t1) as dt;
a 3 7 1 2 4 3 7 1 2 4
select * from (select a from t1 union select b from t2) as dt;
a 3 7 1 2 4 30 70 10 20 40
select * from
((select a from t1) union (select a from t1)) as dt;
a 3 7 1 2 4
select * from
((select a from t1) union (select b from t2)) as dt;
a 3 7 1 2 4 30 70 10 20 40
select * from
(select a from t1 where a=1 union select a from t1 where a=3) dt;
a 1 3
select * from
((select a from t1 where a=1) union select a from t1 where a=3) dt;
a 1 3
select * from
(((select a from t1 where a=1) union select a from t1 where a=3)) dt;
a 1 3
select * from
(((select a from t1 where a<=3) union (select a from t1 where a=3))) as dt;
a 3 1 2
select * from
(select a from t1 where a=1 union (select a from t1 where a=3)) as dt;
a 1 3
select * from
((select a from t1 where a=1 union (select a from t1 where a=3))) as dt;
a 1 3
select * from
(((select a from t1 where a=1 union (select a from t1 where a=3)))) as dt;
a 1 3
select * from
( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=7 ) as dt;
a 1 3 7
select * from
( (select a from t1 where a=1 order by a)
union
select a from t1 where a=3 ) as dt;
a 1 3
select * from
( (select a from t1 where a!=3 order by a desc)
union
select a from t1 where a=3 ) as dt;
a 7 1 2 4 3
select * from
( ( select a from t1 where a <=3 except select a from t1 where a >=3 )
union
select a from t1 where a=7 ) as dt;
a 1 2 7
select * from
( ( ( select a from t1 where a <=3
except
select a from t1 where a >=3 )
union
select a from t1 where a=7 ) ) as dt;
a 1 2 7
select * from
( select a from t1 where a=1
union
select a from t1 where a=3
order by a desc) as dt;
a 3 1
select *from
( (select a from t1 limit 2)
union
select a from t1 where a=3
order by a desc) as dt;
a 7 3
select * from
( select a from t1 where a=4
union
(select a from t1 where a <=4 limit 2)
order by a desc ) as dt;
a 4 3 1
select * from
( ( select a from t1 where a=4
union
( select a from t1 where a <=4 order by a ) )
order by a desc limit 2 ) as dt;
a 4 3
select * from
( ( select a from t1 where a <=3 except select a from t1 where a >=3 )
union
select a from t1 where a=7 order by a desc ) as dt;
a 7 2 1
select * from
( ( select a from t1 where a!=3 order by a desc )
union
select a from t1 where a=3
order by a desc ) as dt;
a 7 4 3 2 1
select * from
( (select a from t1 where a=1)
union
(select a from t1 where a=3)
order by a desc ) as dt;
a 3 1
select * from
( ( select a from t1 where a=1
union
select a from t1 where a=3 )
order by a desc ) as dt;
a 3 1
select * from
( ( ( select a from t1 where a=1 )
union
( select a from t1 where a=3 ) )
order by a desc ) as dt;
a 3 1
select * from
( ( select a from t1 where a=1
union
select a from t1 where a=3 )
order by 1 desc ) as dt;
a 3 1
select * from
( ( (select a from t1 where a=1
union
select a from t1 where a=3) ) order by 1 desc ) as dt;
a 3 1
select * from
((((select a from t1 where a=1) union (select a from t1 where a=3)))
order by 1 desc ) as dt;
a 3 1
select * from
( ( (select a from t1 where a=1 )
union
(select a from t1 where a=3) )
order by 1 desc ) as dt;
a 3 1
select * from
( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2
union
select a from t1 where a=4 ) as dt;
a 1 3 2 4
select * from
( ( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2 )
union
select a from t1 where a=4 ) as dt;
a 1 3 2 4
select * from
( (select a from t1 where a=1 union select a from t1 where a=3)
union
(select a from t1 where a=2 union select a from t1 where a=4) ) as dt;
a 1 3 2 4
select * from
( (select a from t1 where a=1 union (select a from t1 where a=3))
union
((select a from t1 where a=2) union select a from t1 where a=4) ) as dt;
a 1 3 2 4
select * from
( ( ( select a from t1 where a=1)
union
select a from t1 where a=3 )
union
select a from t1 where a=2
union
select a from t1 where a=4 ) as dt;
a 1 3 2 4
select * from
( ( ( ( select a from t1 where a=1)
union
select a from t1 where a=3 )
union
select a from t1 where a=2 )
union
select a from t1 where a=4 ) as dt;
a 1 3 2 4
select * from
( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2
union
(select a from t1 where a=4) ) as dt;
a 1 3 2 4
select * from
( select a from t1 where a=1
union
select a from t1 where a=3
union
( select a from t1 where a=2
union
( select a from t1 where a=4 ) ) ) as dt;
a 1 3 2 4
select * from
( select a from t1 where a=1
union
( select a from t1 where a=3
union
( select a from t1 where a=2
union
( select a from t1 where a=4 ) ) ) ) as dt;
a 1 3 2 4
select * from
( ( ( select a from t1 where a=1 union select a from t1 where a=3 )
order by a desc limit 2 )
union
( ( select a from t1 where a=2 union select a from t1 where a=4 )
order by a desc limit 1 ) ) as dt;
a 3 1 4
select * from
( ( ( select a from t1 where a=1 union select a from t1 where a=3 )
order by a desc limit 2 )
union
( ( select a from t1 where a=2 union select a from t1 where a=4 )
order by a desc limit 2 )
order by a) as dt;
a 1 2 3 4
select * from
( ( select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=2 order by a desc limit 2 )
union
select a from t1 where a=4
order by a limit 3 ) as dt;
a 2 3 4
select * from
( ( select a from t1 where a=1
union
select a from t1 where a=3 order by a desc limit 2)
union
select a from t1 where a=2 order by a desc limit 2 ) as dt;
a 3 2
select * from
( ( ( select a from t1 where a >= 2
union
select a from t1 where a=1 order by a desc limit 2 )
union
select a from t1 where a=3 order by a limit 2 )
union
select a from t1 where a=1 ) as dt;
a 3 4 1
# 9.3. derived table as [tailed] TVC
select * from
( values (3), (7), (1) ) as dt; 3 3 7 1
select * from
( (values (3), (7), (1)) ) as dt; 3 3 7 1
select * from
(((values (3), (7), (1)))) as dt; 3 3 7 1
select * from
( values (3), (7), (1) order by 1 limit 2 ) as dt; 3 1 3
select * from
( (values (3), (7), (1)) order by 1 limit 2 ) as dt; 3 1 3
select * from
( ((values (3), (7), (1))) order by 1 limit 2 ) as dt; 3 1 3
select * from
( (((values (3), (7), (1))) order by 1 limit 2) ) as dt; 3 1 3
select * from
( ( (values (3), (7), (1) limit 2) order by 1 desc) ) as dt; 3 3 7
select * from
( ((values (3), (7), (1)) order by 1 desc) limit 2 ) as dt; 3 7 3
select * from
( (((values (3), (7), (1)) order by 1 desc) limit 2) ) as dt; 3 7 3
# 9.3. derived table as union of TVCs
select * from
( values (3), (7), (1) union values (3), (4), (2) ) dt; 3 3 7 1 4 2
select * from
( values (3), (7), (1) union all values (3), (4), (2) ) as dt; 3 3 7 1 3 4 2
select * from
( values (3), (7), (1) union values (3), (4), (2) ) as dt; 3 3 7 1 4 2
select * from
( values (3), (7), (1) except values (3), (4), (2) ) as dt; 3 7 1
select * from
( (values (3), (7), (1)) union (values (3), (4), (2)) ) as dt; 3 3 7 1 4 2
select * from
( (values (3), (7), (1))
union
(values (3), (4), (2))
union values (5), (7) ) dt; 3 3 7 1 4 2 5
select * from
( (values (3), (7), (1))
union
(values (3), (4), (2))
union
(values (5), (7)) ) as dt; 3 3 7 1 4 2 5
select * from
( (values (3), (7), (1)
union
values (3), (4), (2))
union
values (5), (7) ) as dt; 3 3 7 1 4 2 5
select * from
( values (3), (7), (1)
union (values (3), (4), (2)
union
values (5), (7)) ) as dt; 3 3 7 1 4 2 5
select * from
( (values (3), (7), (1)
union
((values (3), (4), (2)
union values (5), (7)))) ) dt; 3 3 7 1 4 2 5
select * from
( values (3), (7), (1)
union
values (3), (4), (2)
order by 1 ) as dt; 3 1 2 3 4 7
select * from
( (values (3), (7), (1) union values (3), (4), (2)) order by 1 ) as dt; 3 1 2 3 4 7
select * from
( (values (3), (7), (1) union values (3), (4), (2)) order by 1 ) as dt; 3 1 2 3 4 7
select * from
( values (3), (7), (1) union (values (3), (4), (2)) order by 1 ) as dt; 3 1 2 3 4 7
select * from
( (values (3), (7), (1) union values (3), (4), (2)) order by 1 ) as dt; 3 1 2 3 4 7
select * from
( ((values (3), (7), (1)) union values (3), (4), (2)) order by 1 ) as dt; 3 1 2 3 4 7
select * from
( (values (3), (7), (1) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2) ) as dt; 3 1 3 4
select * from
( ((values (3), (7), (1) order by 1) limit 2)
union
((values (3), (4), (2) order by 1 desc) limit 2) ) as dt; 3 1 3 4
select * from
( (((values (3), (7), (1)) order by 1) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) ) as dt; 3 1 3 4
select * from
( (values (3), (7), (1) order by 1 limit 2)
union
values (3), (4), (2)
order by 1 limit 3 ) as dt; 3 1 2 3
select * from
( ((values (3), (7), (1)) order by 1 limit 2)
union
((values (3), (4), (2) order by 1 desc) limit 2)
order by 1 limit 3 ) as dt; 3 1 3 4
select * from
( (select a from t1 where a <=3 order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2) ) dt;
a 1 2 4 3
select * from
( ((select a from t1 where a <=3) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2) ) as dt;
a 1 2 4 3
select * from
( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) ) as dt;
a 1 2 4 3
select * from
( ( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) ) ) dt;
a 1 2 4 3
select * from
( (select a from t1 where a <=3 order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2)
order by a ) as dt;
a 1 2 3 4
select * from
( ((select a from t1 where a <=3) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2)
order by a ) as dt;
a 1 2 3 4
select * from
( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2)
order by a ) as dt;
a 1 2 3 4
select * from
( (((values (3), (4), (2)) order by 1 desc) limit 2) ) as dt; 3 4 3
select * from
( ( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) )
order by a ) as dt;
a 1 2 3 4
select * from
( (values (3), (4), (2) order by 1 desc limit 2)
union
(select a from t1 where a <=3 order by 1 limit 2) ) as dt; 3 4 3 1 2
select * from
( (values (3), (4), (2) order by 1 desc limit 2)
union
((select a from t1 where a <=3) order by 1 limit 2) ) as dt; 3 4 3 1 2
select * from
( (((values (3), (4), (2)) order by 1 desc) limit 2)
union
(((select a from t1 where a <=3) order by 1) limit 2) ) as dt; 3 4 3 1 2
select * from
( (((values (3), (4), (2)) order by 1 desc) limit 2)
union
(((select a from t1 where a <=3) order by a) limit 2)
order by 1 ) as dt; 3 1 2 3 4
select * from
( ( select a from t1 where a=1
union
values (3), (4), (2) order by 1 desc )
union
select a from t1 where a=2 order by a desc limit 3 ) as dt;
a 4 3 2
# 9.4. derived table as [tailed] simple select with CTE
select * from
( with t as (select * from t1 where a <=3)
select * from t ) as dt;
a 3 1 2
select * from
( with t as (select * from t1 where a <=3)
(select * from t) ) as dt;
a 3 1 2
select * from
( with t as (select * from t1 where a <=3)
((select * from t)) ) as dt;
a 3 1 2
select * from
( with t as ((select * from t1 where a <=3))
select * from t ) as dt;
a 3 1 2
select * from
( with t as (((select * from t1 where a <=3)))
select * from t ) as dt;
a 3 1 2
select * from
( with t as (select * from t1 where a <=3)
select * from t order by a ) as dt;
a 3 1 2
select * from
( with t as (select * from t1 where a <=3)
(select * from t) order by a ) as dt;
a 3 1 2
select * from
( with t as (select * from t1 where a <=3)
(select * from t) order by a desc limit 2 ) as dt;
a 3 2
select * from
( with t as (select * from t1 where a >=2 order by a limit 2)
select * from t ) as dt;
a 2 3
select * from
( with t as (((select * from t1 where a >=2) order by a desc) limit 2)
select * from t ) as dt;
a 7 4
select * from
( with t as (select * from t1 where a >=2 order by a desc limit 2)
select * from t order by a ) as dt;
a 7 4
# 9.5. derived table as tailed union with CTE
select * from
( with t as (select * from t1 where a <=3)
select a from t1 where a=1 union select a from t where a=3 ) as dt;
a 1 3
select * from
( with t as (select * from t1 where a <=3)
(select a from t) union (select b from t2) ) as dt;
a 3 1 2 30 70 10 20 40
select * from
( with t as (select * from t1 where a <=3)
(select a from t) union (select b as a from t2) order by a desc ) as dt;
a 70 40 30 20 10 3 2 1
select * from
( with t as (select * from t1 where a < 3 union select * from t1 where a > 3)
select a from t1 where a=1 union select a from t where a=7 ) as dt;
a 1 7
select * from
( with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 ) as dt;
a 4 7
select * from
( with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4
union
select a from t where a=7
order by a desc ) as dt;
a 7 4
select * from
( with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
select a from t1 where a=4
union select a from t where a=7
order by a desc ) dt;
a 7 4
select * from
( with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
(select a from t1 where a=4
union
select a from t where a=7
order by a desc) ) as dt;
a 7 4
select * from
( with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
((select a from t1 where a=4
union
select a from t where a=7) order by a desc) ) as dt;
a 7 4
select * from
( with t as
( select * from t1 where a < 3
union
values (4), (7)
order by a desc limit 3 )
select a from t1 where a=4
union
select a from t where a=7
order by a desc ) dt;
a 7 4
select * from
( with t(a) as
( values (2), (1)
union
(values (4), (7))
order by 1 desc limit 3 )
select a from t1 where a=4
union select a from t where a=7
order by a desc ) as dt;
a 7 4
select * from
( with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc)
order by 1 desc limit 3 )
select a from t1 where a=1
union
select a from t where a=7 order by a desc ) as dt;
a 7 1
select * from
( with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc)
order by 1 limit 3 )
select a from t where a=1 union values (7) order by a desc ) as dt;
a 7 1
select * from
( with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc ) )
select a from t where a=1 union select 7 order by a desc ) as dt;
a 7 1
select * from
( with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
select a from t where a=1
union select a from s where a=7
order by a desc ) dt;
a 7 1
select * from
( with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
(select a from t where a=1
union
select a from s where a=7 order by a desc) ) dt;
a 7 1
select * from
( with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
(select a from t where a=1
union
select a from s where a=7)
order by a desc ) dt;
a 7 1 10. view 10.1. view as simple select
create view v1 as
select * from t1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` latin1 latin1_swedish_ci
select * from v1;
a 3 7 1 2 4
drop view v1;
create view v1 as
select 2*a as c from t1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 2 * `t1`.`a` AS `c` from `t1` latin1 latin1_swedish_ci
select * from v1;
c 6 14 2 4 8
drop view v1;
create view v1(c) as
select 2*a from t1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 2 * `t1`.`a` AS `c` from `t1` latin1 latin1_swedish_ci
select * from v1;
c 6 14 2 4 8
drop view v1;
create view v1 as
((select * from t1));
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1`) latin1 latin1_swedish_ci
select * from v1;
a 3 7 1 2 4
drop view v1; 10.2. view as tailed simple select
create view v1 as
select * from t1 order by a;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` order by `t1`.`a` latin1 latin1_swedish_ci
select * from v1;
a 1 2 3 4 7
drop view v1;
create view v1 as
(select * from t2 order by a limit 2) order by b desc;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__3`.`a` AS `a`,`__3`.`b` AS `b` from (select `t2`.`a` AS `a`,`t2`.`b` AS `b` from `t2` order by `t2`.`a` limit 2) `__3` order by `__3`.`b` desc latin1 latin1_swedish_ci
select * from v1;
a b 220 110
drop view v1; 10.3. view as union
create view v1 as
select a from t1 union select b from t2;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` union select `t2`.`b` AS `b` from `t2` latin1 latin1_swedish_ci
select * from v1;
a 3 7 1 2 4 30 70 10 20 40
drop view v1;
create view v1 as
(select a from t1) union (select b from t2);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1`) union (select `t2`.`b` AS `b` from `t2`) latin1 latin1_swedish_ci
select * from v1;
a 3 7 1 2 4 30 70 10 20 40
drop view v1;
create view v1 as
(select a from t1 where a=1) union select a from t1 where a=3;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1) union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 latin1 latin1_swedish_ci
select * from v1;
a 1 3
drop view v1;
create view v1 as
((select a from t1 where a<=3) union (select a from t1 where a=3));
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3) union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3) latin1 latin1_swedish_ci
select * from v1;
a 3 1 2
drop view v1;
create view v1 as
select a from t1 where a=1
union
select a from t1 where a=3
union
select a from t1 where a=7;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 7 latin1 latin1_swedish_ci
select * from v1;
a 1 3 7
drop view v1;
create view v1 as
( ( select a from t1 where a!=3 order by a desc limit 3)
union
select a from t1 where a=3 );
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <> 3 order by `t1`.`a` desc limit 3) union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 latin1 latin1_swedish_ci
select * from v1;
a 7 4 2 3
drop view v1;
create view v1 as
( select a from t1 where a <=3 except select a from t1 where a >=3 )
union
select a from t1 where a=7;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3 except select `t1`.`a` AS `a` from `t1` where `t1`.`a` >= 3) `__5` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 7 latin1 latin1_swedish_ci
select * from v1;
a 1 2 7
drop view v1;
create view v1 as
(select a from t1 limit 2) union select a from t1 where a=3 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1` limit 2) union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 7 3
drop view v1;
create view v1 as
select a from t1 where a=1
union
( select a from t1 where a=3
union
( select a from t1 where a=2
union
( select a from t1 where a=4 ) ) );
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union select `__7`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 union select `__6`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 2 union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4)) `__6`) `__7` latin1 latin1_swedish_ci
select * from v1;
a 1 3 2 4
drop view v1;
create view v1 as
( ( select a from t1 where a >= 2
union
select a from t1 where a=1 order by a desc limit 2 )
union
select a from t1 where a=3 order by a limit 2 )
union
select a from t1 where a=1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__7`.`a` AS `a` from (select `__5`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` >= 2 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 order by `a` desc limit 2) `__5` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 3 order by `a` limit 2) `__7` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 latin1 latin1_swedish_ci
select * from v1;
a 3 4 1
drop view v1; 10.4. view as [tailed] TVC
create view v1 as
values (3), (7), (1);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS values (3),(7),(1) latin1 latin1_swedish_ci
select * from v1; 3 3 7 1
drop view v1;
create view v1 as
(((values (3), (7), (1))) order by 1);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (values (3),(7),(1) order by 1) latin1 latin1_swedish_ci
select * from v1; 3 1 3 7
drop view v1; 10.5. view as [tailed] union of TVCs
create view v1 as
values (3), (7), (1) union values (3), (4), (2);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS values (3),(7),(1) union values (3),(4),(2) latin1 latin1_swedish_ci
select * from v1; 3 3 7 1 4 2
drop view v1;
create view v1 as
(values (3), (7), (1) union values (3), (4), (2)) order by 1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS values (3),(7),(1) union values (3),(4),(2) order by 1 latin1 latin1_swedish_ci
select * from v1; 3 1 2 3 4 7
drop view v1;
create view v1 as
(values (3), (7), (1) order by 1 limit 2)
union
(values (3), (4), (2) order by 1 desc limit 2);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (values (3),(7),(1) order by 1 limit 2) union (values (3),(4),(2) order by 1 desc limit 2) latin1 latin1_swedish_ci
select * from v1; 3 1 3 4
drop view v1;
create view v1 as
(values (3), (7), (1) order by 1 limit 2)
union
values (3), (4), (2)
order by 1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (values (3),(7),(1) order by 1 limit 2) union values (3),(4),(2) order by 1 latin1 latin1_swedish_ci
select * from v1; 3 1 2 3 4
drop view v1; 10.6. view as [tailed] union of [tailed] select and tailed TVC
create view v1 as
( (((select a from t1 where a <=3) order by a) limit 2)
union
(((values (3), (4), (2)) order by 1 desc) limit 2) )
order by a;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3 order by `t1`.`a` limit 2) union (values (3),(4),(2) order by 1 desc limit 2) order by `a` latin1 latin1_swedish_ci
select * from v1;
a 1 2 3 4
drop view v1;
create view v1 as
( select a from t1 where a=1
union
values (3), (4), (2) order by 1 desc )
union
select a from t1 where a=2 order by a desc limit 3;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a` from (select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union values (3),(4),(2) order by 1 desc) `__5` union select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 2 order by `a` desc limit 3 latin1 latin1_swedish_ci
select * from v1;
a 4 3 2
drop view v1; 10.7. view as select with CTE
create view v1 as
with t as (select * from t1 where a <=3)
select * from t;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
select * from v1;
a 3 1 2
drop view v1;
create view v1 as
with t as
( select * from t1 where a < 3
union
select * from t1 where a > 3
order by a desc limit 3 )
select a from t1 where a=4 union select a from t where a=7;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3 order by `a` desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 latin1 latin1_swedish_ci
select * from v1;
a 4 7
drop view v1; 10.8. view as union with CTE
create view v1 as
with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
(select a from t1 where a=4 union select a from t where a=7 order by a desc);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3) union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3) order by `a` desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 7 4
drop view v1;
create view v1 as
with t as
( (select * from t1 where a < 3)
union
(select * from t1 where a > 3)
order by a desc limit 3 )
(select a from t where a=4 union select a from t where a=7 order by a desc);
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3) union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3) order by `a` desc limit 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 7 4
drop view v1;
create view v1 as
with t(a) as (values (2), (1)) select a from t;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as (values (2),(1))select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
select * from v1;
a 2 1
drop view v1;
create view v1 as
with t(a) as
( values (2), (1)
union
(values (4), (7))
order by 1 desc limit 3 )
select a from t1 where a=4 union select a from t where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as (values (2),(1) union (values (4),(7)) order by 1 desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 7 4
drop view v1;
create view v1 as
with t(a) as
( (values (2), (1))
union
(values (4), (7) order by 1 desc)
order by 1 desc limit 3 )
select a from t1 where a=1 union select a from t where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(`a`) as ((values (2),(1)) union (values (4),(7) order by 1 desc) order by 1 desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 7 1
drop view v1;
create view v1 as
with t as (select * from t1 where a < 3),
s as (select * from t1 where a > 3)
select a from t where a=1 union select a from s where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3), s as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 7 1
drop view v1;
create view v1 as
with t as (select * from t1 where a < 3),
s as (select * from t where a > 3)
select a from t where a=1 union select a from s where a=7 order by a desc;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3), s as (select `t`.`a` AS `a` from `t` where `t`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
select * from v1;
a 1
drop view v1;
drop table t1,t2;
# End of 10.4 tests
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.125 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.