इस अद्यतन क्वेरी को SQL-सर्वर प्रपत्र से 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 एक छद्म स्तंभ है जो एक पंक्ति के अद्वितीय स्थान की ओर इशारा करता है। आप इसके बजाय तालिका की प्राथमिक कुंजी का उपयोग कर सकते हैं यदि उसके पास एक है।
प्रश्न से प्रश्न #2 वह नहीं करता जिसकी आप अपेक्षा करते हैं क्योंकि अद्यतन तालिका Users
कभी भी एक ही टेबल में शामिल नहीं होता है Users u
FROM खंड में। जैसे जब आप FROM क्लॉज में टेबल का नाम दो बार डालते हैं, तो वे परोक्ष रूप से जुड़ते या बंधे नहीं होते हैं, उन्हें पंक्तियों के दो स्वतंत्र सेट के रूप में माना जाता है।