这可能很简单,但无法弄清楚。
我有表摘要和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).* 符号将选择扩展到列。