我需要在查询中迭代列值。
Table1
index value
1, Nice
2, School
3, Day
Table2
index parent money
1, John, 100
2, Mary, 200
3, Mark, 300
伪代码:
FOR all values in Table1
SELECT parent, function(value)
from Table2
主要问题在于这个函数,我一次只能插入一个值。
答案 0 :(得分:3)
这就是你的伪代码所要求的:
SELECT
Table2.parent,
MyFunction(Table1.value) AS function_value
FROM Table2
CROSS JOIN Table1
根据您的示例数据,此查询的结果将是:
PARENT FUNCTION_VALUE
------ ---------------------------
John value of function('Nice')
Mary value of function('Nice')
Mark value of function('Nice')
John value of function('School')
Mary value of function('School')
Mark value of function('School')
John value of function('Day')
Mary value of function('Day')
Mark value of function('Day')
这是因为查询调用了 Table1
中 Table2
中每一行的中的每一行的函数。如果Table1
中有8行,Table2
中有10行,则会获得80个结果(8 x 10)。如果每个表中有1,000行,您将获得100万个结果(1,000 x 1,000)。
如果每个表中的Index
列用于关联行,请尝试改为:
SELECT
Table2.parent,
MyFunction(Table1.value) AS function_value
FROM Table2
JOIN Table1 ON Table2.index = Table1.index
使用您的示例数据,此查询的输出将为:
PARENT FUNCTION_VALUE
------ ---------------------------
John value of function('Nice')
Mary value of function('School')
Mark value of function('Day')
如果这些查询都不符合您的要求,请提供样本结果。