कभी-कभी आपको MySQL में एक तालिका से दूसरी तालिका में कई मान सम्मिलित करने की आवश्यकता हो सकती है। इन मानों को अपने INSERT sql स्टेटमेंट में मैन्युअल रूप से दर्ज करना कठिन हो सकता है। MySQL INSERT INTO SELECT क्वेरी के साथ तालिका में मान सम्मिलित करने के लिए आसानी से SELECT कथन का उपयोग करने का तरीका यहां दिया गया है। आप इसका उपयोग MySQL तालिकाओं को शीघ्रता से भरने के लिए कर सकते हैं।
MySQL इन्सर्ट इन सेलेक्ट
यहां INSERT INTO SELECT स्टेटमेंट का उपयोग करके MySQL तालिकाओं में मान सम्मिलित करने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है new_orders(id, order_date, amount)
mysql> create table new_orders(id int, order_date date, amount int);
यहां MySQL INSERT INTO SELECT स्टेटमेंट का सिंटैक्स दिया गया है।
INSERT INTO table_name(column_list) SELECT select_list FROM another_table WHERE condition;
उपरोक्त क्वेरी में, हम VALUES क्लॉज के बजाय एक SELECT स्टेटमेंट का उपयोग करते हैं। किसी अन्य तालिका से एक या अधिक पंक्तियों को त्वरित रूप से कॉपी करना, या किसी अन्य तालिका से सारांश डेटा को भी कॉपी करना बहुत उपयोगी है।
बोनस पढ़ें :MySQL शीर्ष एन पंक्तियों का चयन करें
आइए MySQL INSERT INTO SELECT के लिए कुछ उदाहरण देखें।
MySQL कई पंक्तियों में सम्मिलित करें
INSERT INTO SELECT स्टेटमेंट का उपयोग करके तालिका में एकाधिक पंक्तियों को सम्मिलित करने के लिए SQL क्वेरी यहां दी गई है।
mysql> insert into new_orders
select id, order_date, item_price
from orders;
mysql> select * from new_orders;
+------+------------+--------+
| id | order_date | amount |
+------+------------+--------+
| 1 | 2020-07-01 | 150 |
| 2 | 2020-07-01 | 235 |
+------+------------+--------+
आप INSERT क्लॉज के बाद कॉलम नामों को छोड़ सकते हैं यदि SELECT स्टेटमेंट में कॉलम नाम आपकी टेबल के समान हैं।
बोनस पढ़ें :MySQL डुप्लीकेट रिकॉर्ड हटाएं
MySQL एक ही टेबल से चयन में डालें
INSERT INTO SELECT स्टेटमेंट का उपयोग करके एक ही टेबल से पंक्तियों को सम्मिलित करने के लिए SQL क्वेरी यहां दी गई है।
mysql> insert into new_orders
select *
from new_orders;
mysql> select * from new_orders;
+------+------------+--------+
| id | order_date | amount |
+------+------------+--------+
| 1 | 2020-07-01 | 150 |
| 2 | 2020-07-01 | 235 |
| 1 | 2020-07-01 | 150 |
| 2 | 2020-07-01 | 235 |
+------+------------+--------+
उपरोक्त क्वेरी में, हम एक टेबल में सभी कॉलम के लिए MySQL INSERT INTO SELECT का उपयोग करते हैं।
बोनस पढ़ें :संग्रहित प्रक्रिया कैसे निष्पादित करें
MySQL किसी अन्य डेटाबेस से चयन में सम्मिलित करें
किसी अन्य डेटाबेस डैशबोर्ड से पंक्तियों को सम्मिलित करने के लिए SQL क्वेरी यहां दी गई है . केवल अंतर यह है कि डेटाबेस नाम को SELECT क्वेरी में अपने टेबल नाम के साथ जोड़ दें।
mysql> insert into users (user_id,date_joined) select id,date_joined from dashboard.auth_user;
उपरोक्त क्वेरी में, हमने dashboard.auth_user . का उपयोग किया है केवल auth_user . के बजाय यह निर्दिष्ट करने के लिए कि यह तालिका किसी भिन्न डेटाबेस में है।
बोनस पढ़ें :MySQL डुप्लीकेट रिकॉर्ड प्राप्त करें
डुप्लिकेट अपडेट पर MySQL INSERT INTO SELECT
यदि आप किसी तालिका में डुप्लिकेट प्राथमिक कुंजी या अनुक्रमणिका मान सम्मिलित करते हैं, तो MySQL एक त्रुटि देगा। INSERT INTO SELECT स्टेटमेंट में, आप ON DUPLICATE KEY UPDATE क्लॉज का उपयोग करके, डुप्लिकेट मानों के मामले में MySQL को विशिष्ट कॉलम अपडेट करने का निर्देश दे सकते हैं। यहां डुप्लीकेट अपडेट पर MySQL INSERT INTO SELECT का एक उदाहरण दिया गया है।
मान लें कि आपके पास निम्न तालिका है x_orders(id, amount)
mysql> create table x_orders(id int auto_increment primary key, amount int);
मान लें कि आपके पास new_orders तालिका है जिसमें आईडी कॉलम के लिए डुप्लिकेट मान हैं।
mysql> select * from new_orders; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2020-07-01 | 150 | | 2 | 2020-07-01 | 235 | | 1 | 2020-07-01 | 150 | | 2 | 2020-07-01 | 235 | +------+------------+--------+
मान लें कि आप new_orders तालिका से x_orders में मान सम्मिलित करने का प्रयास करते हैं। दिखाए गए अनुसार आपको एक त्रुटि मिलेगी।
mysql> insert into x_orders(id,amount)
select id, amount
from new_orders;
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
ON DUPLICATE KEY UPDATE क्लॉज का उपयोग करने के लिए यहां SQL है।
mysql> insert into x_orders(id,amount)
select id, amount
from new_orders
on duplicate key update id = RAND() * 100;
mysql> select * from x_orders;
+----+--------+
| id | amount |
+----+--------+
| 27 | 235 |
| 48 | 150 |
| 58 | 235 |
| 62 | 150 |
+----+--------+
Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!