Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Postgres,以1:1的比例执行多个查询_Sql_Postgresql - Fatal编程技术网

Sql Postgres,以1:1的比例执行多个查询

Sql Postgres,以1:1的比例执行多个查询,sql,postgresql,Sql,Postgresql,我必须同时运行3个查询。在第一条语句中,我得到了接下来两条语句的运行次数。问题是最后一个命令的执行次数超出了需要。 我写的查询是: WITH rows_1 AS ( SELECT t1.name, t1.value FROM table1 AS t1 INNER JOIN aux_table2 AS ps ON ps.id = t1.id AND ps.value='pepe' ) , rows_2 AS ( INSERT INTO table2

我必须同时运行3个查询。在第一条语句中,我得到了接下来两条语句的运行次数。问题是最后一个命令的执行次数超出了需要。 我写的查询是:

WITH rows_1 AS (
    SELECT t1.name, t1.value
    FROM table1 AS t1
    INNER JOIN aux_table2 AS ps
    ON ps.id = t1.id AND ps.value='pepe'
    )
, rows_2 AS  (
    INSERT INTO table2 (value1, value2)
    SELECT 'value1', 'value2' FROM rows_1 as sr
    RETURNING id
)
INSERT INTO table3
    (value1, value2, value3)
SELECT sr.value, st.id, sr.name,
FROM rows_1 AS sr, rows_2 AS st
;

问题是,第一个查询给出了我们拥有的对象的数量(N),接下来的两个查询每次必须执行N次,因此两个插入的比率是1:1,我无法实现,最后一个当前执行NxN次

目前还不清楚这些表格是如何排列的。进入
行_2
的行都是相同的,除了此查询中不可见的默认值

也就是说,您可以将一个序列号添加到每个行集合中,并将其用于
连接

WITH rows_1 AS (
    SELECT t1.name, t1.value, ROW_NUMBER() OVER () as seqnum
    FROM table1 t1 JOIN
        aux_table2 ps
        ON ps.id = t1.id AND ps.value='pepe'
    ),
    rows_2 AS  (
      INSERT INTO table2 (value1, value2)
          SELECT 'value1', 'value2'
          FROM rows_1 sr
          RETURNING id
    )
INSERT INTO table3 (value1, value2, value3)
    SELECT sr.value, st.id, sr.name,
    FROM rows_1 sr JOIN
         (SELECT ROW_NUMBER() OVER (ORDER BY id) as seqnum
          FROM rows_2 st
         ) st
         ON st.seqnum = sr.seqnum;

我只需要添加一个小的修改,但效果很好!谢谢