これはおそらく単純なことですが、理解できませんでした。
テーブルの概要とGetSummary
、概要のセットとして行を返す関数があります。このようにクエリできます
SELECT GetSummary(arg1, arg2)
GetSummary
-----------
(val1, val2, val3)
そして、このように実際の列を返します。
SELECT * FROM GetSummary(arg1, arg2)
col1 | col2 | col3
------------------------
val1 | val2 | val3
概要への挿入は正常に機能します。
INSERT INTO Summary (SELECT * FROM GetSummary(arg1, arg2));
INSERT 0 1
しかし、他のテーブルの列に基づいて一度に複数の行を挿入する方法がわかりません。私はこのようなことをしたいと思います:
INSERT INTO Summary (SELECT FROM GetSummary(OtherTable.x, OtherTable.y)
FROM OtherTable WHERE <some query>);
SELECT FROM GetSummary ..
集計テーブルの行が返されないため、これは失敗します。クエリSELECT * FROM GetSummary ..
はそれを行いますが、クエリの書き方がわかりません。
編集
投稿してから数分後にたまたま解決策にたどり着きました。正しい構文は
INSERT INTO Summary (SELECT (GetSummary(OtherTable.x, OtherTable.y)).*
FROM OtherTable WHERE <some query>);
(X).* 表記は、選択を列に展開します。