PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:atualização com autojunção externa esquerda ignorada


Falta apenas uma conexão WHERE cláusula:
UPDATE catalog_category c
SET    leaf_category = true
FROM   catalog_category c1 
LEFT   JOIN catalog_category c2 ON c1.id = c2.parent_id
WHERE  c.id = c1.id
AND    c2.parent_id IS NULL;

Este formulário com NOT EXISTS é provavelmente mais rápido, fazendo o mesmo:
UPDATE catalog_category c
SET    leaf_category = true
WHERE  NOT EXISTS (
    SELECT FROM catalog_category c1
    WHERE  c1.parent_id = c.id
    );

O manual para UPDATE .

Relacionado: