PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL:cập nhật với tự tham gia bên ngoài bên trái bị bỏ qua

Bạn chỉ thiếu WHERE kết nối mệnh đề:

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;

Biểu mẫu này với NOT EXISTS có lẽ nhanh hơn, làm tương tự:

UPDATE catalog_category c
SET    leaf_category = true
WHERE  NOT EXISTS (
    SELECT FROM catalog_category c1
    WHERE  c1.parent_id = c.id
    );

Hướng dẫn cho UPDATE .

Có liên quan:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trạng thái SQL:42883, Không có hàm nào phù hợp với các kiểu đối số và tên đã cho. Nhưng chức năng đó thực sự tồn tại

  2. Đào tạo PostgreSQL cho MySQLers

  3. Cách nhanh chóng loại bỏ một người dùng có các đặc quyền hiện có

  4. Tham gia các bảng từ các cơ sở dữ liệu khác nhau (PostgreSQL)

  5. Cách đặt tên ứng dụng trong url Postgresql JDBC?