MySQL 8.0 リファレンスマニュアル


13.2.12 TABLE ステートメント

TABLE は、MySQL 8.0.19 で導入された DML ステートメントで、指定されたテーブルの行とカラムを返します。

TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]

TABLE ステートメントは、いくつかの方法で SELECT のように動作します。 t という名前のテーブルが存在する場合、次の 2 つのステートメントによって同一の出力が生成されます:

TABLE t;

SELECT * FROM t;

ORDER BY 句および LIMIT 句をそれぞれ使用して、TABLE によって生成される行数を順序付けおよび制限できます。 これらの関数は、次に示すように、SELECT で使用する場合と同じ句 (LIMIT でのオプションの OFFSET 句を含む) と同じように機能します:

mysql> TABLE t;
+----+----+
| a  | b  |
+----+----+
|  1 |  2 |
|  6 |  7 |
|  9 |  5 |
| 10 | -4 |
| 11 | -1 |
| 13 |  3 |
| 14 |  6 |
+----+----+
7 rows in set (0.00 sec)

mysql> TABLE t ORDER BY b;
+----+----+
| a  | b  |
+----+----+
| 10 | -4 |
| 11 | -1 |
|  1 |  2 |
| 13 |  3 |
|  9 |  5 |
| 14 |  6 |
|  6 |  7 |
+----+----+
7 rows in set (0.00 sec)

mysql> TABLE t LIMIT 3;
+---+---+
| a | b |
+---+---+
| 1 | 2 |
| 6 | 7 |
| 9 | 5 |
+---+---+
3 rows in set (0.00 sec)

mysql> TABLE t ORDER BY b LIMIT 3;
+----+----+
| a  | b  |
+----+----+
| 10 | -4 |
| 11 | -1 |
|  1 |  2 |
+----+----+
3 rows in set (0.00 sec)

mysql> TABLE t ORDER BY b LIMIT 3 OFFSET 2;
+----+----+
| a  | b  |
+----+----+
|  1 |  2 |
| 13 |  3 |
|  9 |  5 |
+----+----+
3 rows in set (0.00 sec)

TABLE は、主に次の点で SELECT と異なります:

  • TABLE では、常にテーブルのすべてのカラムが表示されます。

  • TABLE では、行の任意のフィルタリングは許可されません。つまり、TABLE では WHERE 句はサポートされません。

返されるテーブルのカラムを制限するには、ORDER BY および LIMIT(あるいはその両方) を使用して達成できる以上の行をフィルタリングし、SELECT を使用します。

TABLE は、一時テーブルとともに使用できます。

TABLE は、SELECT のかわりに、ここにリストされているものを含め、他の多くの構成要素で使用することもできます:

  • 次に示すように、UNION を使用します:

    mysql> TABLE t1;
    +---+----+
    | a | b  |
    +---+----+
    | 2 | 10 |
    | 5 |  3 |
    | 7 |  8 |
    +---+----+
    3 rows in set (0.00 sec)
    
    mysql> TABLE t2;
    +---+---+
    | a | b |
    +---+---+
    | 1 | 2 |
    | 3 | 4 |
    | 6 | 7 |
    +---+---+
    3 rows in set (0.00 sec)
    
    mysql> TABLE t1 UNION TABLE t2;
    +---+----+
    | a | b  |
    +---+----+
    | 2 | 10 |
    | 5 |  3 |
    | 7 |  8 |
    | 1 |  2 |
    | 3 |  4 |
    | 6 |  7 |
    +---+----+
    6 rows in set (0.00 sec)

    ここで示した UNION は、次のステートメントと同等です:

    mysql> SELECT * FROM t1 UNION SELECT * FROM t2;
    +---+----+
    | a | b  |
    +---+----+
    | 2 | 10 |
    | 5 |  3 |
    | 7 |  8 |
    | 1 |  2 |
    | 3 |  4 |
    | 6 |  7 |
    +---+----+
    6 rows in set (0.00 sec)

    TABLE は、SELECT ステートメントまたは VALUES ステートメント (あるいはその両方) と組み合せて使用することもできます。 セクション13.2.10.3「UNION 句」を参照してください。

  • INTO を使用してユーザー変数を移入し、INTO OUTFILE または INTO DUMPFILE を使用してテーブルデータをファイルに書き込みます。 詳細および例は、セクション13.2.10.1「SELECT ... INTO ステートメント」 を参照してください。

  • 多くの場合、サブクエリーを使用できます。 a という名前のカラムを持つ任意のテーブル t1 と、単一のカラムを持つ別のテーブル t2 がある場合、次のようなステートメントが可能です:

    SELECT * FROM t1 WHERE a IN (TABLE t2);

    テーブル ts の単一カラムの名前が x であると仮定すると、前述のステートメントは次に示す各ステートメントと同等です (いずれの場合もまったく同じ結果が生成されます):

    SELECT * FROM t1 WHERE a IN (SELECT x FROM t2);
    
    SELECT * FROM t1 WHERE a IN (SELECT * FROM t2);

    詳しくはセクション13.2.11「サブクエリー」,をご覧ください。

  • INSERT および REPLACE ステートメントを使用します。それ以外の場合は、SELECT * を使用します。 詳細および例については、セクション13.2.6.1「INSERT ... SELECT ステートメント」を参照してください。

  • TABLE は、多くの場合、CREATE TABLE ... SELECT または CREATE VIEW ... SELECTSELECT のかわりに使用することもできます。 詳細および例については、これらのステートメントの説明を参照してください。


関連キーワード:  ステートメント, TABLE, CREATE, DROP, サブクエリー, テーブル, カラム, FUNCTION, SLAVE, 関数