मैं एसक्यूएल के लिए नया हूं और मैं इस 'डुप्लिकेट हटाएं' प्रश्न पर उलझन में हूं।

'व्यक्ति' नाम की एक तालिका में दो कॉलम होते हैं: आईडी और ईमेल, और मैं इस तालिका में सभी डुप्लिकेट ईमेल प्रविष्टियों को हटाना चाहता हूं, इसकी सबसे छोटी आईडी के आधार पर केवल अद्वितीय ईमेल रखना।

उत्तर इस प्रकार होना चाहिए:

DELETE p1 
FROM Person p1, Person p2
WHERE p1.Email = p2.Email 
AND p1.Id > p2.Id

मेरा प्रश्न यह है कि यहाँ p1 क्या है? उपयोग 'व्यक्ति p1' का क्या अर्थ है?

1
Elaine Yang 7 जिंदा 2021, 00:02
2
नमस्ते, Person p1 एक टेबल उपनाम है।
 – 
IronMan
7 जिंदा 2021, 00:07
क्या मुझे पहले "Person AS p1" बताना चाहिए?
 – 
Elaine Yang
7 जिंदा 2021, 19:01

1 उत्तर

सबसे बढ़िया उत्तर

मान लें कि आपके पास एक टेबल है, जिसे person_office_job_join कहा जाता है, जो काफी माउथफुल है। p1 और p2 उपनाम हैं। इसका मतलब है कि आप अपनी तालिका के संदर्भों को सरल बना सकते हैं।

जैसे

SELECT * 
FROM person LEFT JOIN person_office_job_join poj 
WHERE poj.person_id =  person.id

वैसा ही है जैसा कि

SELECT * 
FROM person LEFT JOIN person_office_job_join  
WHERE person_office_job_join.person_id =  person.id

आपके विशिष्ट मामले में, यह आपको एक ही टेबल पर शामिल होने की अनुमति देता है, जिससे डुप्लिकेट मिलते हैं। एक अधिक जटिल क्वेरी की कल्पना करें, जहां आप तालिका का नाम निर्दिष्ट करते हुए अधिक सामान करना चाहते हैं। शॉर्टहैंड संदर्भ होना बहुत अच्छा है।

1
JoSSte 7 जिंदा 2021, 00:16
आपके जवाब के लिए धन्यवाद। ऐसा लगता है कि "person_office_job_join poj" "person_office_job_join AS poj" के लिए छोटा है।
 – 
Elaine Yang
7 जिंदा 2021, 19:03