मैं अपने उदाहरण से थोड़ा और समझाता हूं।
कार्य: सही जानकारी, जहाँ अभिवावकों (माध्यमिक विद्यालय छोड़ने के बारे में छात्रों) ने पहले विश्वविद्यालय को आवेदन प्रस्तुत किए हैं, जबकि उन्हें स्कूल प्रमाण पत्र मिला है (हाँ, उन्हें पहले प्रमाण पत्र मिला था, जबकि वे जारी किए गए प्रमाण पत्र द्वारा निर्दिष्ट किए गए थे)। सर्टिफिकेट इश्यू डेट को फिट करने के लिए आवेदन जमा की तारीख बढ़ाएं।
इस प्रकार। अगले MySQL की तरह बयान:
UPDATE applications a
JOIN (
SELECT ap.id, ab.certificate_issued_at
FROM abiturients ab
JOIN applications ap
ON ab.id = ap.abiturient_id
WHERE ap.documents_taken_at::date < ab.certificate_issued_at
) b
ON a.id = b.id
SET a.documents_taken_at = b.certificate_issued_at;
इस तरह से PostgreSQL की तरह बन जाता है
UPDATE applications a
SET documents_taken_at = b.certificate_issued_at -- we can reference joined table here
FROM abiturients b -- joined table
WHERE
a.abiturient_id = b.id AND -- JOIN ON clause
a.documents_taken_at::date < b.certificate_issued_at -- Subquery WHERE
आप देख सकते हैं, मूल सबक्वेरी JOINके ONखंड में से एक बन गए हैं WHEREकी स्थिति है, जिसके द्वारा conjucted है ANDदूसरों है, जो सबक्वेरी से बिना किसी परिवर्तन के ले जाया गया है के साथ। और JOINखुद के साथ तालिका करने की कोई आवश्यकता नहीं है (जैसा कि यह उपश्रेणी में था)।