इनमें से कुछ दृष्टिकोण थोड़े जटिल लगते हैं, और मैं आमतौर पर इसे इस प्रकार करता हूं:
दी गई तालिका table
, पंक्ति को अधिकतम फ़ील्ड3 के साथ रखते हुए (फ़ील्ड1, फ़ील्ड2) पर इसे अद्वितीय बनाना चाहते हैं:
DELETE FROM table USING table alias
WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
table.max_field < alias.max_field
उदाहरण के लिए, मेरे पास एक टेबल है, user_accounts
, और मैं ईमेल पर एक अद्वितीय बाधा जोड़ना चाहता हूं, लेकिन मेरे पास कुछ डुप्लीकेट हैं। यह भी कहें कि मैं हाल ही में बनाई गई एक (डुप्लिकेट के बीच अधिकतम आईडी) रखना चाहता हूं।
DELETE FROM user_accounts USING user_accounts ua2
WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
- नोट -
USING
मानक SQL नहीं है, यह एक PostgreSQL एक्सटेंशन है (लेकिन एक बहुत उपयोगी है), लेकिन मूल प्रश्न में विशेष रूप से PostgreSQL का उल्लेख है।