Oi pessoal,

WITH rows AS (
    SELECT
                        t1.id,
                        t1.clientid,
                        t1.name_first,
                        t1.name_last
                        row_number() OVER (ORDER BY t1.id) AS rn
                FROM
                        public.not_monthly t1
                        ),

ins_table_1 AS (
    INSERT INTO public.table_1 (clientid,name_first)
            SELECT
                    clientid,
                    name_first
            FROM rows
    RETURNING id
    ),
    ins_table_2 AS (
    INSERT INTO public.table_2 (name_last,clientid)
            SELECT
                    name_last,
                    clientid
            FROM rows
    RETURNING id
    )

    r AS (
    select c_id, ROW_NUMBER() OVER () AS rn
    FROM ins_table_1
    ),

    t AS (
    select id, ROW_NUMBER() OVER () AS rn
    FROM rows
    )
-- SELECT r.c_id FROM r JOIN t USING (rn)

    UPDATE table_2 SET c_id =
    (
    SELECT r.c_id FROM r JOIN t USING (rn)
    )
    WHERE clientid = 124312
    RETURNING *;


Com a query a cima eu recebo o erro: ERROR: more than one row returned by a
subquery used as an expression

Mas, o select retorna o c_Id como esperado: SELECT r.c_id FROM r JOIN t
USING (rn)

O que estou fazendo de errado?


public.not_monthly = Tabela que contém dados para importar (importado de um
CSV)
public.table_1 = Tabela para importar clientid e name_first
public.table_2 = Tabela para importar clientid, name_last e c_id (ID da
table_1 - Este id deve respeitar a ordem..)

clientid é igual para todas as rows, ou seja, não posso me basear nela
(WHERE clientid = .... )

Obrigado!
Patrick
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a