Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में पहली टेबल के अधिकतम ID को दूसरी टेबल के सभी ID में INSERT करना

MySQL INSERT INTO SELECT: एक टेबल के एग्रीगेट मान को दूसरी टेबल में डालना

INSERT INTO ... SELECT सिंटैक्स का उपयोग करके आप एक टेबल से डेटा चुनकर सीधे दूसरी टेबल में डाल सकते हैं। इसमें सबक्वेरी का उपयोग करके एग्रीगेट मान (जैसे MAX) भी शामिल कर सकते हैं।

उदाहरण: DemoTable1 के अधिकतम ID को DemoTable2 के सभी रिकॉर्ड में डालें

पहली टेबल:

CREATE TABLE DemoTable1 (Id INT, Name VARCHAR(100));
INSERT INTO DemoTable1 VALUES (1001, 'Chris'), (999, 'Robert'), (1003, 'Mike'), (1002, 'Sam');

दूसरी टेबल:

CREATE TABLE DemoTable2 (StudentId INT, StudentFirstName VARCHAR(100));

सबक्वेरी के साथ INSERT INTO SELECT

INSERT INTO DemoTable2 (StudentId, StudentFirstName)
SELECT (SELECT MAX(Id) FROM DemoTable1), Name FROM DemoTable1;

परिणाम — DemoTable2:

+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1003      | Chris            |
| 1003      | Robert           |
| 1003      | Mike             |
| 1003      | Sam              |
+-----------+------------------+

व्याख्या

  • (SELECT MAX(Id) FROM DemoTable1) — सबक्वेरी जो एकल मान (1003) लौटाती है
  • यह मान DemoTable1 की प्रत्येक पंक्ति के लिए StudentId कॉलम में डाला जाता है
  • Name कॉलम DemoTable1 से सीधे लिया जाता है

महत्वपूर्ण: सबक्वेरी एकल मान लौटनी चाहिए

यदि सबक्वेरी एक से अधिक पंक्ति लौटाती है, तो त्रुटि होगी: Subquery returns more than 1 row।

वैकल्पिक: CROSS JOIN का उपयोग

INSERT INTO DemoTable2 (StudentId, StudentFirstName)
SELECT m.MaxId, d.Name
FROM DemoTable1 d
CROSS JOIN (SELECT MAX(Id) AS MaxId FROM DemoTable1) m;

यह अधिक स्पष्ट और कभी-कभी अधिक कुशल होता है।

उपयोग केस

  • बैच प्रोसेसिंग में रन ID/बैच ID सभी रिकॉर्ड में डालना
  • ऑडिट टेबल में अधिकतम ट्रांजैक्शन ID कॉपी करना
  • रेफरेंस मान को कई पंक्तियों पर लागू करना
  1. - MySQL में AUTO_INCREMENT टेबल में INSERT INTO SELECT कैसे करें?

    MySQL में AUTO_INCREMENT प्राइमरी की वाली टेबल में INSERT INTO ... SELECT का उपयोग करते समय, आप स्पष्ट रूप से ID मान प्रदान कर सकते हैं या ऑटो-जनरेट होने दे सकते हैं। दोनों दृष्टिकोण वैध हैं लेकिन अलग व्यवहार करते हैं। उदाहरण: स्पष्ट ID के साथ INSERT INTO SELECT ऑटो-इन्क्रीमेंट टेबल बनाएं: mysql&

  1. - MySQL में कॉलम मान के पहले अक्षर को प्राप्त करके दूसरे कॉलम में डालें

    समाधान LEFT() फंक्शन का उपयोग करके पहले अक्षर को निकालें और UPDATE से दूसरे कॉलम में स्टोर करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2036 (Title) VALUES (Chris), (John), (Adam); अपडेट क्वेरी UPDATE DemoTable2036 SET FirstLetter = LEFT(Title, 1); परिणाम +-------------+-------+ | FirstLetter

  1. - MySQL कॉलम से अधिकतम मान प्राप्त करना

    परिचय MySQL में किसी कॉलम का अधिकतम मान प्राप्त करने के लिए MAX() एग्रीगेट फंक्शन या ORDER BY ... DESC LIMIT 1 का उपयोग किया जा सकता है। टेबल निर्माण और डेटा सम्मिलन insert into DemoTable values(58); Query OK, 1 row affected (0.25 sec) सभी रिकॉर्ड प्रदर्शित करना select * from DemoTable; +-------