gpt4 book ai didi

sql - 如何在for循环中执行多个查询

转载 作者:行者123 更新时间:2023-11-29 13:32:25 28 4
gpt4 key购买 nike

我想在 postgresql 的 for 循环中执行多个查询。

例如

FOR rec IN select * from student LOOP

END LOOP;

在上面的示例中,select * from student 只是一个查询,我有多个查询要循环。我想对多个查询使用同一个循环而不是多个循环。

最佳答案

各种查询如何相互关联?

(1) 根据各自的排序顺序,合并第 1、2 等。

您可以使用 row_number() 将每个查询放在一个子查询中,然后将它们全部链接到 row_number 上并在所有...上运行一个循环 ...

FOR rec IN
SELECT *
FROM (
SELECT *, row_number() OVER (ORDER BY student_id) AS rn
FROM student
) s
FULL JOIN (
SELECT *, row_number() OVER (ORDER BY foo_id) AS rn
FROM foo
) t USING (rn)
-- etc.
LOOP
-- do stuff
END LOOP;

使用 FULL [ OUTER ] JOIN如果行数可能不匹配并且您不想丢失任何行数。

或者您可以遍历一个 查询(最好是行数最多的查询)并打开a cursor对于您的其他查询。然后,您可以根据需要在循环的每次迭代中FETCH [NEXT],并根据需要获取任意数量的游标。

(2) 交叉连接 - 将每一行与下一个查询的每一行相结合。

不太可能,因为它会为多个查询快速生成大量组合。无论哪种方式,从上面删除 row_number() 并交叉连接您的查询。
或者嵌套循环;同样的效果,只是更贵。

关于sql - 如何在for循环中执行多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20416423/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com