MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

13.2.10.4 カッコで囲まれたクエリー式

parenthesized_query_expression:
    ( query_expression [order_by_clause] [limit_clause] )
      [order_by_clause]
      [limit_clause]
      [into_clause]

query_expression:
    query_block [UNION query_block [UNION query_block ...]]
      [order_by_clause]
      [limit_clause]
      [into_clause]

query_block:
    SELECT ...             (see セクション13.2.10「SELECT ステートメント」)

order_by_clause:
    ORDER BY as for SELECT (see セクション13.2.10「SELECT ステートメント」)

limit_clause:
    LIMIT as for SELECT    (see セクション13.2.10「SELECT ステートメント」)

into_clause:
    INTO as for SELECT     (see セクション13.2.10「SELECT ステートメント」)

MySQL 8.0.22 以上では、前述の構文に従ってカッコで囲まれたクエリー式がサポートされます。 最も単純なのは、カッコで囲まれたクエリー式に単一の SELECT が含まれ、次のオプション句は含まれないことです:

(SELECT 1);
(SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'mysql');

カッコで囲まれたクエリー式には、複数の SELECT ステートメントで構成される UNION を含めることもでき、オプションの句の一部またはすべてで終わることができます:

mysql> (SELECT 1 AS result UNION SELECT 2);
+--------+
| result |
+--------+
|      1 |
|      2 |
+--------+
mysql> (SELECT 1 AS result UNION SELECT 2) LIMIT 1;
+--------+
| result |
+--------+
|      1 |
+--------+
mysql> (SELECT 1 AS result UNION SELECT 2) LIMIT 1 OFFSET 1;
+--------+
| result |
+--------+
|      2 |
+--------+
mysql> (SELECT 1 AS result UNION SELECT 2)
       ORDER BY result DESC LIMIT 1;
+--------+
| result |
+--------+
|      2 |
+--------+
mysql> (SELECT 1 AS result UNION SELECT 2)
       ORDER BY result DESC LIMIT 1 OFFSET 1;
+--------+
| result |
+--------+
|      1 |
+--------+
mysql> (SELECT 1 AS result UNION SELECT 3 UNION SELECT 2)
       ORDER BY result LIMIT 1 OFFSET 1 INTO @var;
mysql> SELECT @var;
+------+
| @var |
+------+
|    2 |
+------+

カッコで囲まれたクエリー式はクエリー式としても使用されるため、クエリー式は通常、クエリーブロックで構成され、カッコで囲まれたクエリー式で構成されることもあります:

(SELECT * FROM t1 ORDER BY a) UNION (SELECT * FROM t2 ORDER BY b) ORDER BY z;

クエリーブロックには、外部の UNION および ORDER BYLIMIT の前に適用される後続の ORDER BY 句および LIMIT 句がある場合があります。

末尾に ORDER BY または LIMIT を含むクエリーブロックをカッコで囲まずに含めることはできませんが、カッコは様々な方法で強制に使用できます:

このセクションで説明する構文には、特定の制限事項があります: