कभी-कभी आपको मिलान किए गए रिकॉर्ड या बेजोड़ रिकॉर्ड खोजने के लिए 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 मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!