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