sql - 通过来自不同未链接表的不同字段的连续循环

标签 sql postgresql loops select plpgsql

我有几个表格展示了网站上的不同实体。它们之间的联系对我的任务无关紧要。 (这也不是我的设计)。 我想通过一些文本字段来完成翻译、拼写检查等艰苦的工作。文本很多

我的问题是:我可以按顺序查询所有这些表的 FOR 循环吗?下面的示例中的 array_cat 是否是一个适当的决定,或者它会吃掉我所有的 ram?还有另一种变体 - 创建第二个函数,接收表名作为参数。我很乐意选择一个更简单的决定。

下面的测试示例不适用于 array_cat 中的语法错误。运算符 ||也给我语法错误。

DO
$$
DECLARE
  qs TEXT;
BEGIN
  FOR qs IN array_cat( -- as @ammoQ suggested to do UNION ALL
    SELECT array_agg(messages) FROM posts UNION ALL
    SELECT array_agg(comments) FROM boards )
  LOOP
    -- here I need: count chars really processed
    -- to do not exceed the billing quota of external api
    -- then make an UPSERT into cache table for another long process
    -- if quota is not exceeded
  END LOOP;
-- and return total of processed symbols
END;
$$ LANGUAGE plpgsql;

最佳答案

使用union

编辑:删除 array_agg

DO
$$
DECLARE
  qs TEXT;
BEGIN
  FOR qs IN (
    SELECT messages x FROM posts union all
    SELECT comments FROM boards )
  LOOP
    RAISE DEBUG 'TEXT is %', qs.x;
  END LOOP;
END;
$$ LANGUAGE plpgsql;

关于sql - 通过来自不同未链接表的不同字段的连续循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43707436/

相关文章:

sql - Where子句,返回至少满足三个条件中的两个条件的值

sql - 在 PostgreSQL 中使用 FROM 两个表时如何显示单个表的计数?

postgresql - 删除记录时锁定数据库表 - 了解 postgresql 中的 "Read Committed"事务隔离

c# - 循环迭代父节点,直到找到特定标签

python - 使用 DJANGO 框架进行 INNER JOIN

android - 选择 4 个网格位置之间的所有条目

sql - array_length() 函数的第二个参数是什么?

postgresql - 在 PostgreSQL 中存储图像的最佳方式

excel - 使用VBA循环遍历每一列并从大到小排序

python - 在 Python 中使用循环解析 XML