Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL जॉइन ऑन बनाम यूजिंग?

यह ज्यादातर वाक्यात्मक चीनी है, लेकिन कुछ अंतर उल्लेखनीय हैं:

चालू दोनों में से अधिक सामान्य है। एक कॉलम पर टेबल, कॉलम का एक सेट और यहां तक ​​​​कि एक शर्त भी शामिल हो सकता है। उदाहरण के लिए:

SELECT * FROM world.City JOIN world.Country ON (City.CountryCode = Country.Code) WHERE ...

उपयोग करना तब उपयोगी होता है जब दोनों तालिकाएं ठीक उसी नाम का कॉलम साझा करती हैं जिस पर वे जुड़ते हैं। इस मामले में, कोई कह सकता है:

SELECT ... FROM film JOIN film_actor USING (film_id) WHERE ...

एक और अच्छी बात यह है कि किसी को ज्वाइनिंग कॉलम को पूरी तरह से क्वालिफाई करने की जरूरत नहीं है:

SELECT film.title, film_id -- film_id is not prefixed
FROM film
JOIN film_actor USING (film_id)
WHERE ...

उदाहरण के लिए, उपरोक्त को चालू . के साथ करने के लिए , हमें लिखना होगा:

SELECT film.title, film.film_id -- film.film_id is required here
FROM film
JOIN film_actor ON (film.film_id = film_actor.film_id)
WHERE ...

film.film_id पर ध्यान दें SELECT . में योग्यता खंड। केवल film_id . कहना गलत होगा क्योंकि इससे अस्पष्टता पैदा होगी:

<ब्लॉककोट>

त्रुटि 1052 (23000):फ़ील्ड सूची में कॉलम 'film_id' अस्पष्ट है

जहां तक ​​select * , ज्वाइनिंग कॉलम ON . के साथ परिणाम सेट में दो बार दिखाई देता है जबकि यह USING . के साथ केवल एक बार दिखाई देता है :

mysql> create table t(i int);insert t select 1;create table t2 select*from t;
Query OK, 0 rows affected (0.11 sec)

Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

Query OK, 1 row affected (0.19 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select*from t join t2 on t.i=t2.i;
+------+------+
| i    | i    |
+------+------+
|    1 |    1 |
+------+------+
1 row in set (0.00 sec)

mysql> select*from t join t2 using(i);
+------+
| i    |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL नमूना डेटाबेस

  2. आयात निर्यात mysql डेटाबेस कमांड लाइन सुपरफास्ट

  3. इकाई ढांचे के लिए MySQL कनेक्शन का उपयोग नहीं कर सकता 6

  4. क्या आपको MySQL में तालिका नामों के रूप में संख्याओं का उपयोग करने की अनुमति है?

  5. शीर्ष 50 MySQL साक्षात्कार प्रश्न जो आपको 2022 में तैयार करने चाहिए