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

MySQL में दो टेबल्स की तुलना कैसे करें

कभी-कभी आपको मिलान किए गए रिकॉर्ड या बेजोड़ रिकॉर्ड खोजने के लिए MySQL में दो तालिकाओं की तुलना करने की आवश्यकता हो सकती है। यहाँ MySQL में दो तालिकाओं की तुलना करने के लिए SQL क्वेरी है।

MySQL में दो तालिकाओं की तुलना कैसे करें

यहाँ MySQL में दो तालिकाओं की तुलना करने के चरण दिए गए हैं। SQL में दो तालिकाओं की तुलना करने के लिए अलग-अलग उपयोग के मामले हैं। हम उनमें से प्रत्येक को एक-एक करके देखेंगे। मान लें कि आपके पास निम्नलिखित 2 टेबल हैं आदेश (आईडी, आदेश_तिथि, राशि) और आदेश2(आईडी, आदेश_तिथि, राशि) जिनके 2 समान रिकॉर्ड हैं।

mysql> create table orders(id int, order_date date, amount int);

mysql> insert into orders(id, order_date, amount)
     values(1,'2020-07-25',250),
     (2,'2020-07-26',350),
     (3,'2020-07-27',200),
     (4,'2020-07-28',150);

mysql> select * from orders;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
+------+------------+--------+

mysql> create table orders2(id int, order_date date, amount int);

mysql> insert into orders2(id, order_date, amount)
     values(3,'2020-07-27',200),
     (4,'2020-07-28',150),
     (5,'2020-07-29',250),
     (6,'2020-07-30',300);

mysql> select * from orders2;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
|    5 | 2020-07-29 |    250 |
|    6 | 2020-07-30 |    300 |
+------+------------+--------+

बोनस पढ़ें :MySQL में पिछले एक महीने का डेटा कैसे प्राप्त करें

MySQL विभिन्न तालिकाओं से दो स्तंभों की तुलना करें

मान लें कि आप दो अलग-अलग तालिकाओं आदेश से केवल दो स्तंभों (उदा. id) की तुलना करना चाहते हैं और आदेश2. विभिन्न तालिकाओं से दो स्तंभों की तुलना करने और मेल खाने वाले रिकॉर्ड का चयन करने के लिए यहां SQL क्वेरी है।

mysql> select * from orders
       where id in
       (select id from orders2);
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
+------+------------+--------+

उपरोक्त क्वेरी में, हम उन ऑर्डर से रिकॉर्ड का चयन करते हैं जिनकी id स्तंभ मान id . की सूची में मौजूद है एक सबक्वेरी का उपयोग करके ऑर्डर 2 से प्राप्त कॉलम मान।

इसी तरह, यदि आप दो स्तंभों की तुलना करना चाहते हैं और उन रिकॉर्ड का चयन करना चाहते हैं जो मेल नहीं खाते हैं, तो नीचे दिखाए गए अनुसार IN से पहले एक NOT कीवर्ड जोड़कर उपरोक्त क्वेरी को अपडेट करें।

mysql> select * from orders
            where id NOT in
            (select id from orders2);
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
+------+------------+--------+

बोनस पढ़ें :MySQL में टेबल कॉपी कैसे करें

MySQL मिलान किए गए रिकॉर्ड खोजने के लिए दो तालिकाओं की तुलना करें

यदि आप दो तालिकाओं की तुलना करना चाहते हैं और एकाधिक स्तंभों के आधार पर मिलान किए गए रिकॉर्ड ढूंढना चाहते हैं, तो यहां SQL क्वेरी है। मान लें कि आप एक से अधिक कॉलम id, order_date, राशि . की तुलना करके एक जैसे रिकॉर्ड ढूंढना चाहते हैं

डुप्लिकेट पंक्तियों को बनाए रखने के लिए सबसे पहले हम दो तालिकाओं में से एक UNION करते हैं।

mysql> select id, order_date, amount
     from orders
     union all
     select id, order_date, amount
     from orders2;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
|    5 | 2020-07-29 |    250 |
|    6 | 2020-07-30 |    300 |
+------+------------+--------+

इसके बाद, हम id, order_date और राशि . के आधार पर रिकॉर्ड गिनने के लिए GROUP BY करते हैं गिनती> 1 के साथ रिकॉर्ड खोजने के लिए कॉलम, यानी रिकॉर्ड जो एक से अधिक बार होते हैं। हम उपरोक्त क्वेरी का उपयोग सबक्वेरी के रूप में करते हैं।

mysql> select id, order_date, amount
       from (
           select id, order_date, amount
           from orders
           union all
           select id, order_date, amount
           from orders2)
       temp
       group by id, order_date, amount
       having count(*)>1;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    3 | 2020-07-27 |    200 |
|    4 | 2020-07-28 |    150 |
+------+------------+--------+

बोनस पढ़ें :MySQL में NOT NULL बाधा कैसे जोड़ें

MySQL बेजोड़ रिकॉर्ड खोजने के लिए दो तालिकाओं की तुलना करें

इसी तरह, यहाँ MySQL में बेजोड़ कॉलम खोजने के लिए दो तालिकाओं की तुलना करने का तरीका बताया गया है। उपरोक्त क्वेरी में, गिनती (*)>1 का उपयोग करने के बजाय, हम कंडीशन काउंट (*) =1 का उपयोग करते हैं, यानी रिकॉर्ड जो केवल एक बार होते हैं।

दो तालिकाओं की तुलना करने और बिना मिलान के रिकॉर्ड खोजने के लिए यहां SQL है।

mysql> select id, order_date, amount
       from (
         select id, order_date, amount
         from orders
         union all
         select id, order_date, amount
         from orders2)
       temp
       group by id, order_date, amount
      having count(*)=1;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-07-25 |    250 |
|    2 | 2020-07-26 |    350 |
|    5 | 2020-07-29 |    250 |
|    6 | 2020-07-30 |    300 |
+------+------------+--------+

बोनस पढ़ें :MySQL में डिफ़ॉल्ट बाधा कैसे जोड़ें

MySQL विभिन्न डेटाबेस से दो तालिकाओं की तुलना करता है

इसी तरह, यदि आप अलग-अलग डेटाबेस db1 और db2 से क्रमशः दो टेबल ऑर्डर और ऑर्डर 2 की तुलना करना चाहते हैं, तो टेबल नामों से पहले डॉट (।)

के साथ डेटाबेस नामों को उपसर्ग करें।

विभिन्न डेटाबेस से दो तालिकाओं की तुलना करने और मिलान किए गए रिकॉर्ड प्राप्त करने के लिए यहां SQL क्वेरी है।

mysql> select id, order_date, amount
       from (
           select id, order_date, amount
           from db1.orders
           union all
           select id, order_date, amount
           from db2.orders2)
       temp
       group by id, order_date, amount
       having count(*)>1;

और यहां विभिन्न डेटाबेस से दो तालिकाओं की तुलना करने और बेजोड़ रिकॉर्ड प्राप्त करने के लिए SQL क्वेरी है।

mysql> select id, order_date, amount
       from (
           select id, order_date, amount
           from db1.orders
           union all
           select id, order_date, amount
           from db2.orders2)
       temp
       group by id, order_date, amount
       having count(*)>1;

उम्मीद है, अब आप MySQL में दो तालिकाओं की तुलना कर सकते हैं

Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!

  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 में LIMIT क्लॉज में वेरिएबल का उपयोग करना

  2. MySQL में उपलब्ध कैरेक्टर सेट की सूची कैसे लौटाएं?

  3. MySQL में ब्लॉग प्रबंधन के लिए डेटाबेस डिजाइन करने के लिए गाइड

  4. आदेश द्वारा क्लॉज का उपयोग करके MySQL में सॉर्ट करना

  5. MySQL के साथ Oracle JDeveloper Snippets का उपयोग करना