2003-05-13 17:58:26 +02:00
drop table if exists t1,t2,t3,t4,t5,t6;
2001-09-28 07:05:54 +02:00
CREATE TABLE t1 (a int not null, b char (10) not null);
insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c');
CREATE TABLE t2 (a int not null, b char (10) not null);
insert into t2 values (3,'c'),(4,'d'),(5,'f'),(6,'e');
select a,b from t1 union select a,b from t2;
2001-08-02 05:29:50 +02:00
a b
1 a
2 b
3 c
4 d
5 f
6 e
2001-09-28 07:05:54 +02:00
select a,b from t1 union all select a,b from t2;
2001-08-02 05:29:50 +02:00
a b
1 a
2 b
3 c
3 c
3 c
4 d
5 f
6 e
2001-09-28 07:05:54 +02:00
select a,b from t1 union all select a,b from t2 order by b;
2001-08-02 05:29:50 +02:00
a b
1 a
2 b
3 c
3 c
3 c
4 d
6 e
5 f
2001-09-28 07:05:54 +02:00
select a,b from t1 union all select a,b from t2 union select 7,'g';
2001-08-02 05:29:50 +02:00
a b
1 a
2 b
3 c
3 c
3 c
4 d
5 f
6 e
7 g
2001-09-28 07:05:54 +02:00
select 0,'#' union select a,b from t1 union all select a,b from t2 union select 7,'gg';
2001-08-02 05:29:50 +02:00
0 #
0 #
1 a
2 b
3 c
3 c
3 c
4 d
5 f
6 e
7 g
2001-09-28 07:05:54 +02:00
select a,b from t1 union select a,b from t1;
2001-08-02 05:29:50 +02:00
a b
1 a
2 b
3 c
2001-09-28 07:05:54 +02:00
select 't1',b,count(*) from t1 group by b UNION select 't2',b,count(*) from t2 group by b;
2001-08-02 05:29:50 +02:00
t1 b count(*)
t1 a 1
t1 b 1
t1 c 2
t2 c 1
t2 d 1
t2 e 1
t2 f 1
2001-10-25 13:41:49 +02:00
(select a,b from t1 limit 2) union all (select a,b from t2 order by a) limit 4;
a b
1 a
2 b
3 c
4 d
2001-12-13 01:31:19 +01:00
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1);
a b
1 a
2002-03-19 13:07:52 +01:00
2 b
3 c
2001-12-13 01:31:19 +01:00
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
a b
3 c
2 b
1 a
2002-11-30 21:53:50 +01:00
(select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by t1.b;
2003-01-14 17:00:34 +01:00
Table 't1' from one of SELECT's can not be used in global ORDER clause
2002-04-02 19:08:55 +02:00
explain (select a,b from t1 limit 2) union all (select a,b from t2 order by a limit 1) order by b desc;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-10-03 17:47:04 +02:00
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
2002-09-26 22:08:22 +02:00
2 UNION t2 ALL NULL NULL NULL NULL 4 Using filesort
2001-09-28 07:05:54 +02:00
explain select a,b from t1 union all select a,b from t2;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-10-03 17:47:04 +02:00
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
2002-09-26 22:08:22 +02:00
2 UNION t2 ALL NULL NULL NULL NULL 4
2002-02-28 20:58:32 +01:00
explain select xx from t1 union select 1;
Unknown column 'xx' in 'field list'
explain select a,b from t1 union select 1;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-10-03 17:47:04 +02:00
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
2002-12-14 16:43:01 +01:00
2 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
2002-02-28 20:58:32 +01:00
explain select 1 union select a,b from t1 union select 1;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-12-14 16:43:01 +01:00
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
2002-09-26 22:08:22 +02:00
2 UNION t1 ALL NULL NULL NULL NULL 4
2002-12-14 16:43:01 +01:00
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
2002-02-28 20:58:32 +01:00
explain select a,b from t1 union select 1 limit 0;
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-12-14 16:43:01 +01:00
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
2 UNION NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
2001-09-28 07:05:54 +02:00
select a,b from t1 into outfile 'skr' union select a,b from t2;
Wrong usage of UNION and INTO
select a,b from t1 order by a union select a,b from t2;
Wrong usage of UNION and ORDER BY
insert into t3 select a from t1 order by a union select a from t2;
Wrong usage of UNION and ORDER BY
create table t3 select a,b from t1 union select a from t2;
The used SELECT statements have a different number of columns
select a,b from t1 union select a from t2;
The used SELECT statements have a different number of columns
select * from t1 union select a from t2;
The used SELECT statements have a different number of columns
select a from t1 union select * from t2;
The used SELECT statements have a different number of columns
2002-07-24 18:55:08 +02:00
select * from t1 union select SQL_BUFFER_RESULT * from t2;
Wrong usage/placement of 'SQL_BUFFER_RESULT'
2001-09-28 07:05:54 +02:00
create table t3 select a,b from t1 union all select a,b from t2;
insert into t3 select a,b from t1 union all select a,b from t2;
replace into t3 select a,b as c from t1 union all select a,b from t2;
drop table t1,t2,t3;
2003-05-21 20:39:58 +02:00
select * union select 1;
No tables used
select 1 as a,(select a union select a);
a (select a union select a)
1 1
(select 1) union (select 2) order by 0;
Unknown column '0' in 'order clause'
SELECT @a:=1 UNION SELECT @a:=@a+1;
@a:=1
1
2
(SELECT 1) UNION (SELECT 2) ORDER BY (SELECT a);
Unknown column 'a' in 'field list'
(SELECT 1,3) UNION (SELECT 2,1) ORDER BY (SELECT 2);
1 3
1 3
2 1
2001-09-28 07:05:54 +02:00
CREATE TABLE t1 (
`pseudo` char(35) NOT NULL default '',
`pseudo1` char(35) NOT NULL default '',
`same` tinyint(1) unsigned NOT NULL default '1',
PRIMARY KEY (`pseudo1`),
KEY `pseudo` (`pseudo`)
) TYPE=MyISAM;
INSERT INTO t1 (pseudo,pseudo1,same) VALUES ('joce', 'testtt', 1),('joce', 'tsestset', 1),('dekad', 'joce', 1);
SELECT pseudo FROM t1 WHERE pseudo1='joce' UNION SELECT pseudo FROM t1 WHERE pseudo='joce';
2001-09-14 18:50:56 +02:00
pseudo
dekad
joce
2001-09-28 07:05:54 +02:00
SELECT pseudo1 FROM t1 WHERE pseudo1='joce' UNION SELECT pseudo1 FROM t1 WHERE pseudo='joce';
2001-09-17 21:44:51 +02:00
pseudo1
joce
testtt
tsestset
2001-09-28 07:05:54 +02:00
SELECT * FROM t1 WHERE pseudo1='joce' UNION SELECT * FROM t1 WHERE pseudo='joce' order by pseudo desc,pseudo1 desc;
2001-09-17 14:40:03 +02:00
pseudo pseudo1 same
joce tsestset 1
2001-09-17 21:44:51 +02:00
joce testtt 1
dekad joce 1
2001-09-28 07:05:54 +02:00
SELECT pseudo1 FROM t1 WHERE pseudo='joce' UNION SELECT pseudo FROM t1 WHERE pseudo1='joce';
2001-09-21 02:38:35 +02:00
pseudo1
testtt
tsestset
dekad
2001-09-28 07:05:54 +02:00
SELECT pseudo1 FROM t1 WHERE pseudo='joce' UNION ALL SELECT pseudo FROM t1 WHERE pseudo1='joce';
2001-09-21 02:38:35 +02:00
pseudo1
testtt
tsestset
dekad
2001-09-28 07:05:54 +02:00
SELECT pseudo1 FROM t1 WHERE pseudo='joce' UNION SELECT 1;
2001-09-21 02:38:35 +02:00
pseudo1
testtt
tsestset
1
2001-09-28 07:05:54 +02:00
drop table t1;
2002-03-19 13:07:52 +01:00
create table t1 (a int);
create table t2 (a int);
insert into t1 values (1),(2),(3),(4),(5);
insert into t2 values (11),(12),(13),(14),(15);
(select * from t1 limit 2) union (select * from t2 limit 3) limit 4;
a
1
2
11
12
(select * from t1 limit 2) union (select * from t2 limit 3);
a
1
2
11
12
13
2002-03-22 12:26:13 +01:00
(select * from t1 limit 2) union (select * from t2 limit 20,3);
a
1
2
set SQL_SELECT_LIMIT=2;
2002-07-23 17:31:22 +02:00
(select * from t1 limit 1) union (select * from t2 limit 3);
2002-03-22 12:26:13 +01:00
a
1
2002-07-23 17:31:22 +02:00
11
2002-03-22 12:26:13 +01:00
set SQL_SELECT_LIMIT=DEFAULT;
2002-03-19 13:07:52 +01:00
drop table t1,t2;
2003-05-13 17:58:26 +02:00
CREATE TABLE t1 (
cid smallint(5) unsigned NOT NULL default '0',
cv varchar(250) NOT NULL default '',
PRIMARY KEY (cid),
UNIQUE KEY cv (cv)
) ;
INSERT INTO t1 VALUES (8,'dummy');
CREATE TABLE t2 (
cid bigint(20) unsigned NOT NULL auto_increment,
cap varchar(255) NOT NULL default '',
PRIMARY KEY (cid),
KEY cap (cap)
) ;
CREATE TABLE t3 (
gid bigint(20) unsigned NOT NULL auto_increment,
gn varchar(255) NOT NULL default '',
must tinyint(4) default NULL,
PRIMARY KEY (gid),
KEY gn (gn)
) ;
INSERT INTO t3 VALUES (1,'V1',NULL);
CREATE TABLE t4 (
uid bigint(20) unsigned NOT NULL default '0',
gid bigint(20) unsigned default NULL,
rid bigint(20) unsigned default NULL,
cid bigint(20) unsigned default NULL,
UNIQUE KEY m (uid,gid,rid,cid),
KEY uid (uid),
KEY rid (rid),
KEY cid (cid),
KEY container (gid,rid,cid)
) ;
INSERT INTO t4 VALUES (1,1,NULL,NULL);
CREATE TABLE t5 (
rid bigint(20) unsigned NOT NULL auto_increment,
rl varchar(255) NOT NULL default '',
PRIMARY KEY (rid),
KEY rl (rl)
) ;
CREATE TABLE t6 (
uid bigint(20) unsigned NOT NULL auto_increment,
un varchar(250) NOT NULL default '',
uc smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (uid),
UNIQUE KEY nc (un,uc),
KEY un (un)
) ;
INSERT INTO t6 VALUES (1,'test',8);
SELECT t4.uid, t5.rl, t3.gn as g1, t4.cid, t4.gid as gg FROM t3, t6, t1, t4 left join t5 on t5.rid = t4.rid left join t2 on t2.cid = t4.cid WHERE t3.gid=t4.gid AND t6.uid = t4.uid AND t6.uc = t1.cid AND t1.cv = "dummy" AND t6.un = "test";
uid rl g1 cid gg
1 NULL V1 NULL 1
SELECT t4.uid, t5.rl, t3.gn as g1, t4.cid, t4.gid as gg FROM t3, t6, t1, t4 left join t5 on t5.rid = t4.rid left join t2 on t2.cid = t4.cid WHERE t3.gid=t4.gid AND t6.uid = t4.uid AND t3.must IS NOT NULL AND t6.uc = t1.cid AND t1.cv = "dummy" AND t6.un = "test";
uid rl g1 cid gg
(SELECT t4.uid, t5.rl, t3.gn as g1, t4.cid, t4.gid as gg FROM t3, t6, t1, t4 left join t5 on t5.rid = t4.rid left join t2 on t2.cid = t4.cid WHERE t3.gid=t4.gid AND t6.uid = t4.uid AND t3.must IS NOT NULL AND t6.uc = t1.cid AND t1.cv = "dummy" AND t6.un = "test") UNION (SELECT t4.uid, t5.rl, t3.gn as g1, t4.cid, t4.gid as gg FROM t3, t6, t1, t4 left join t5 on t5.rid = t4.rid left join t2 on t2.cid = t4.cid WHERE t3.gid=t4.gid AND t6.uid = t4.uid AND t6.uc = t1.cid AND t1.cv = "dummy" AND t6.un = "test");
uid rl g1 cid gg
1 NULL V1 NULL 1
drop table t1,t2,t3,t4,t5,t6;
2003-02-22 16:02:36 +01:00
CREATE TABLE t1 ( id int(3) unsigned default '0') TYPE=MyISAM;
INSERT INTO t1 (id) VALUES("1");
CREATE TABLE t2 ( id int(3) unsigned default '0', id_master int(5) default '0', text1 varchar(5) default NULL, text2 varchar(5) default NULL) TYPE=MyISAM;
INSERT INTO t2 (id, id_master, text1, text2) VALUES("1", "1",
"foo1", "bar1");
INSERT INTO t2 (id, id_master, text1, text2) VALUES("2", "1",
"foo2", "bar2");
INSERT INTO t2 (id, id_master, text1, text2) VALUES("3", "1", NULL,
"bar3");
INSERT INTO t2 (id, id_master, text1, text2) VALUES("4", "1",
"foo4", "bar4");
SELECT 1 AS id_master, 1 AS id, NULL AS text1, 'ABCDE' AS text2 UNION SELECT id_master, t2.id, text1, text2 FROM t1 LEFT JOIN t2 ON t1.id = t2.id_master;
id_master id text1 text2
1 1 NULL ABCDE
1 1 bar1
1 2 bar2
1 3 NULL bar3
1 4 bar4
SELECT 1 AS id_master, 1 AS id, 'ABCDE' AS text1, 'ABCDE' AS text2 UNION SELECT id_master, t2.id, text1, text2 FROM t1 LEFT JOIN t2 ON t1.id = t2.id_master;
id_master id text1 text2
1 1 ABCDE ABCDE
1 1 foo1 bar1
1 2 foo2 bar2
1 3 NULL bar3
1 4 foo4 bar4
drop table if exists t1,t2;
2003-02-27 02:44:44 +01:00
create table t1 (a int not null primary key auto_increment, b int, key(b));
create table t2 (a int not null primary key auto_increment, b int);
insert into t1 (b) values (1),(2),(2),(3);
insert into t2 (b) values (10),(11),(12),(13);
explain (select * from t1 where a=1) union (select * from t2 where a=1);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1
2 UNION t2 const PRIMARY PRIMARY 4 const 1
(select * from t1 where a=5) union (select * from t2 where a=1);
a b
1 10
(select * from t1 where a=5 and a=6) union (select * from t2 where a=1);
a b
1 10
(select t1.a,t1.b from t1,t2 where t1.a=5) union (select * from t2 where a=1);
a b
1 10
(select * from t1 where a=1) union (select t1.a,t2.a from t1,t2 where t1.a=t2.a);
a b
1 1
2 2
3 3
4 4
explain (select * from t1 where a=1 and b=10) union (select t1.a,t2.a from t1,t2 where t1.a=t2.a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2 UNION t1 index PRIMARY PRIMARY 4 NULL 4 Using index
2 UNION t2 index PRIMARY PRIMARY 4 NULL 4 Using where; Using index
explain (select * from t1 where a=1) union (select * from t1 where b=1);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1
2 UNION t1 ref b b 5 const 1 Using where
drop table t1,t2;