Berikut adalah cara umum untuk mengubah kueri pembaruan ini dari bentuk SQL-server ke PostgreSQL:
UPDATE Users
SET bUsrActive = false
WHERE
ctid IN (
SELECT u.ctid FROM Users u
LEFT JOIN Users u2 ON u.sUsrClientCode = u2.sUsrClientCode AND u2.bUsrAdmin = 1 AND u2.bUsrActive = 1
WHERE u.bUsrAdmin = 0 AND u.bUsrActive = 1 AND u2.nkUsr IS NULL
)
ctid adalah kolom semu yang menunjuk ke lokasi unik dari sebuah baris. Anda dapat menggunakan kunci utama tabel sebagai gantinya jika ada.
Kueri #2 dari pertanyaan tidak melakukan apa yang Anda harapkan karena tabel yang diperbarui Users
tidak pernah bergabung ke tabel yang sama Users u
dalam klausa FROM. Sama seperti ketika Anda memasukkan nama tabel dua kali dalam klausa FROM, mereka tidak digabungkan atau diikat secara implisit, mereka dianggap sebagai dua set baris independen.