我找不到解决这个问题的方法。
我的表A有主键ROW_ID,表B有相同的extern键和列SOMETHING。 另外,我有这样的功能:
CREATE FUNCTION FIND_SOMETHING_FOR_ID(ROW_ID INTEGER)
RETURNS TABLE(SOMETHING INTEGER)
BEGIN ATOMIC
RETURN
SELECT SOME_SCALAR_FUNCTION(SOMETHING)
FROM B b
WHERE b.ROW_ID=ROW_ID;
END@
我想要做的是:对于FIND_SOMETHING_FOR_ID返回的A get表中的每个ROW_ID 然后获取所有表的UNION。
答案 0 :(得分:0)
根据documentation,你可以做你想做的事情:
select fsfi.*
from A a cross join
table(find_something_for_id(a.row_id)) fsfi;
也就是说,表值函数可以在from
子句中引用之前的表,但不能在它之后引用它们。 (注意:我将,
中的from
替换为cross join
,因为我在from
子句中厌恶逗号。)
顺便说一下,SQL Server使用cross apply
运算符解决了这个问题。