SELECT INTO 演算子は、クエリ結果を変数リストに代入するために使用されます。クエリは1行のデータのみを返します。
以下の例では、クエリの出力列は COUNT(*) と MAX(c1) であり、その結果はそれぞれ変数 @a と @b に代入されます。
obclient> CREATE TABLE t1(c1 INT, c2 INT);
Query OK, 0 rows affected
obclient> INSERT INTO t1 VALUES(1,1);
Query OK, 1 rows affected
obclient> INSERT INTO t1 VALUES(2,2);
Query OK, 1 rows affected
obclient> EXPLAIN SELECT COUNT(*), MAX(c1) INTO @a, @b FROM t1;
Query Plan:
=========================================
|ID|OPERATOR |NAME|EST. ROWS|COST|
-----------------------------------------
|0 |SELECT INTO | |0 |37 |
|1 | SCALAR GROUP BY| |1 |37 |
|2 | TABLE SCAN |t1 |2 |37 |
=========================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)], [T_FUN_MAX(t1.c1)]), filter(nil)
1 - output([T_FUN_COUNT(*)], [T_FUN_MAX(t1.c1)]), filter(nil),
group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_MAX(t1.c1)])
2 - output([t1.c1]), filter(nil),
access([t1.c1]), partitions(p0)
上記の例では、実行計画表示の outputs & filters において、SELECT INTO 演算子の出力情報が詳細に示されています。
| 情報名 | 意味 |
|---|---|
| output | この演算子は変数リストに代入する式です。 |
| filter | この演算子のフィルタ条件です。例ではSELECT INTO演算子にfilterが設定されていないため、nilとなります。 |