ON और USING दोनों जॉइन कंडीशन निर्दिष्ट करते हैं, लेकिन अलग-अलग परिदृश्यों के लिए उपयुक्त हैं।
ON क्लॉज (सामान्य उपयोग)
- कॉलम नाम अलग हों
- जटिल कंडीशन (एकाधिक कॉलम, एक्सप्रेशन, ऑपरेटर)
- अधिक लचीला और स्पष्ट
SELECT f.Id, f.Name, p.Address
FROM ForeignTableDemo f
JOIN PrimaryTableDemo p ON f.FK = p.FK;
USING क्लॉज (जब कॉलम नाम समान हों)
- दोनों टेबल में समान नाम का कॉलम हो
- सिंटैक्स छोटा और साफ
- परिणाम में जॉइन कॉलम एक बार आता है (डुप्लिकेट नहीं)
SELECT *
FROM ForeignTableDemo
JOIN PrimaryTableDemo USING (FK)
WHERE FK = 1;
आउटपुट:
+------+------+------+---------+
| FK | Id | Name | Address |
+------+------+------+---------+
| 1 | 1 | John | US |
+------+------+------+---------+
मुख्य अंतर
| पहलू | ON | USING |
|---|---|---|
| कॉलम नाम | अलग हो सकते हैं | समान होना चाहिए |
| परिणाम कॉलम | दोनों टेबल के कॉलम दिखते हैं | जॉइन कॉलम एक बार |
| क्वालिफिकेशन | टेबल नाम/एलियास जरूरी | क्वालिफिकेशन नहीं (अस्पष्टता त्रुटि देगा) |
| एक्सप्रेशन | कोई भी एक्सप्रेशन | केवल कॉलम नाम |
कब क्या उपयोग करें
- ON: सामान्य मामला, अलग कॉलम नाम, जटिल कंडीशन, सेल्फ-जॉइन
- USING: समान कॉलम नाम, सरल इक्वि-जॉइन, पठनीयता
- NATURAL JOIN: सभी समान नाम वाले कॉलम पर ऑटो-जॉइन (सावधानी से उपयोग करें)
सेल्फ-जॉइन उदाहरण (ON आवश्यक)
SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.id;