About Reference:アバウトリファレンス

当サイトはPHPなどのサーバーサイドスクリプトや、
MySQLなどのデータベースプログラミングのマニュアルサイトです。
WEBアプリケーションの開発やこれからWEBプログラミングを覚えたい!
というような方々のお手伝いが出来れば幸いです。

日本語 MySQL マニュアル

6.4.1.2. UNION 構文

SELECT ...
UNION [ALL]
SELECT ...
  [UNION
   SELECT ...]

UNION は MySQL 4.0.0 で導入されました。

UNION は、多くの SELECT ステートメントを 1 つの結果セットに結合するために使用します。

SELECTselect_expression 部分のカラムリストには、同じ型のカラムを指定します。最初の SELECT クエリで指定したカラム名が、返される結果のカラム名として使用されます。

これらの SELECT コマンドは通常の SELECT コマンドですが、次の制限が適用されます。

  • 最後の SELECT コマンドにのみ INTO OUTFILE を指定できる。

UNION にキーワード ALL を付けないと、総結果セットに対して 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;

UNION の結果セット内のカラムの型と長さでは、すべての SELECT ステートメントで取り出された値が考慮されます。 MySQL 4.1.1 より前のバージョンの UNION では、最初の SELECT で使用された値のみに基づいて結果の型と長さが決まる、という制約がありました。 この場合、たとえば、最初の SELECT の値よりも長い値が 2 番目の SELECT で取り出されると、切り捨てが行われることがあります。

mysql> SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10);
+---------------+
| REPEAT('a',1) |
+---------------+
| a             |
| b             |
+---------------+

MySQL 4.1.1 以降、この制約はなくなりました。

mysql> SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10);
+---------------+
| REPEAT('a',1) |
+---------------+
| a             |
| bbbbbbbbbb    |
+---------------+

Converted by OpenCage. Base data is http://dev.mysql.com/doc/mysql/ja/.