SELECT
JOIN
UNION
Buy this Reference Manual in softcover from Barnes & Noble!
UNION
SELECT ... UNION [ALL] SELECT ... [UNION SELECT ...]
Оператор UNION
реализован в MySQL 4.0.0.
UNION
используется для объединения результатов работы нескольких команд SELECT
в один набор результатов.
Эти команды SELECT
являются обычными командами выборки данных, но со следующим ограничением:
SELECT
может включать оператор INTO OUTFILE
.Если не используется ключевое слово ALL
для UNION
, все возвращенные строки будут уникальными, так как по умолчанию подразумевается DISTINCT
для всего результирующего набора данных. Если указать ключевое слово ALL
, то результат будет содержать все найденные строки из всех примененных команд SELECT
.
Если для всего результата UNION
необходимо применить оператор ORDER BY
, следует использовать круглые скобки:
(SELECT a FROM table_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10) UNION (SELECT a FROM table_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10) ORDER BY a;
Posted by on Sunday February 9 2003, @7:47pm | [Delete] [Edit] |
There's a tutorial though that explains how to emulate UNION statements in MySQL 3.x. The address is:
http://www.nstep.net/~mpbailey/programming/tutorials.union.php
Posted by on Tuesday February 18 2003, @4:54pm | [Delete] [Edit] |
One little gotcha with UNION. The manual says that the
columns you select should be of the same type. That means
that if you SELECT literal values first, as you might if you wanted column headers to be printed, subsequent SELECTs
in the UNION will be limited to the lengths of strings you give.
Example:
If you run a SELECT statement such as this:
SELECT
"foo" foo_col,
"bar" bar_col,
"zama" zama_col
UNION ALL
SELECT
foo_col,
bar_col,
zama_col
FROM
tabname
...
The returned columns will be limited to 3, 3, and
4 characters in length respectively because that was
the length of the first "row" returned.
To workaround this, select an empty row from the
true table first:
SELECT
foo_col,
bar_col,
zama_col
FROM
tabname
WHERE
1=0
UNION
SELECT
"foo" foo_col,
"bar" bar_col,
"zama" zama_col
UNION ALL
SELECT
foo_col,
bar_col,
zama_col
FROM
...
Add your own comment.