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

MySQL में टेबल में मानों के लिए अलग-अलग संयोजन कैसे सेट करें?

MySQL में क्रॉस जॉइन (कार्टेशियन प्रोडक्ट) का उपयोग करके मान संयोजन जनरेट करना

एक टेबल के कॉलम मानों के सभी संभावित संयोजन (कार्टेशियन प्रोडक्ट) जनरेट करने के लिए, उसी टेबल को कई बार जॉइन करें (सेल्फ जॉइन) या एकाधिक टेबल रेफरेंस का उपयोग करें।

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना

mysql> CREATE TABLE DemoTable622 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value1 INT,
    Value2 INT
);

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable622(Value1, Value2) VALUES(1000, 1000), (2000, 3000);

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable622;

आउटपुट:

+----+--------+--------+
| Id | Value1 | Value2 |
+----+--------+--------+
| 1  | 1000   | 1000   |
| 2  | 2000   | 3000   |
+----+--------+--------+
2 rows in set (0.00 sec)

सभी संयोजन जनरेट करने के लिए क्वेरी

mysql> SELECT tbl1.Id, tbl2.Value1, tbl3.Value2 
FROM DemoTable622 tbl1, DemoTable622 tbl2, DemoTable622 tbl3;

आउटपुट:

+----+--------+--------+
| Id | Value1 | Value2 |
+----+--------+--------+
| 1  | 1000   | 1000   |
| 2  | 1000   | 1000   |
| 1  | 2000   | 1000   |
| 2  | 2000   | 1000   |
| 1  | 1000   | 3000   |
| 2  | 1000   | 3000   |
| 1  | 2000   | 3000   |
| 2  | 2000   | 3000   |
+----+--------+--------+
8 rows in set (0.01 sec)

व्याख्या:

  • 2 पंक्तियाँ × 2 पंक्तियाँ × 2 पंक्तियाँ = 8 संयोजन (कार्टेशियन प्रोडक्ट)
  • tbl1, tbl2, tbl3 एक ही टेबल के तीन एलियास हैं
  • कोई JOIN शर्त नहीं = क्रॉस जॉइन

स्पष्ट CROSS JOIN वाक्यविन्यास (अनुशंसित)

SELECT t1.Id, t2.Value1, t3.Value2
FROM DemoTable622 t1
CROSS JOIN DemoTable622 t2
CROSS JOIN DemoTable622 t3;

विशिष्ट संयोजन के लिए: विभिन्न कॉलम से

-- प्रत्येक Value1 के साथ प्रत्येक Value2 का संयोजन
SELECT t1.Value1, t2.Value2
FROM DemoTable622 t1
CROSS JOIN DemoTable622 t2;

आउटपुट: 4 पंक्तियाँ (2 × 2)

उपयोग के मामले

  • टेस्ट डेटा जनरेशन
  • संभावित संयोजनों की मैट्रिक्स बनाना
  • रिपोर्टिंग के लिए प्लेसहोल्डर पंक्तियाँ
  • पैरामीटर ग्रिड खोज

⚠️ चेतावनी

बड़े टेबल पर कार्टेशियन प्रोडक्ट तेजी से बढ़ता है (n×m×p...)। 1000 पंक्तियों वाली टेबल पर 3-वे क्रॉस जॉइन = 1 बिलियन पंक्तियाँ! हमेशा WHERE क्लॉज या LIMIT के साथ सीमित करें।

सीमित संयोजन

SELECT t1.Value1, t2.Value2
FROM DemoTable622 t1
CROSS JOIN DemoTable622 t2
LIMIT 10;
  1. - MySQL में IF स्टेटमेंट से ENUM मानों के लिए कस्टम संदेश सेट करें

    IF() फ़ंक्शन से ENUM Y/N को पठनीय संदेश में बदलें ENUM कॉलम के Y/N मानों को Active Member/Not Active Member जैसे कस्टम संदेश में बदलने के लिए IF() का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1992 ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName varchar(20),

  1. - MySQL में कॉलम मानों के लिए ENUM कैसे सेट करें?

    ENUM कॉलम के साथ टेबल बनाना टेबल बनाते समय ENUM प्रकार निर्दिष्ट करें: ); रिकॉर्ड डालना INSERT INTO DemoTable2019 VALUES (45, Second); सभी रिकॉर्ड देखना SELECT * FROM DemoTable2019; +--------------+---------------+ | StudentMarks | StudentStatus | +--------------+---------------+ | 96

  1. - MySQL में INSERT INTO SELECT से दूसरी टेबल के मान लेकर नई टेबल भरें

    सिंटैक्स insert into targetTable(col1, col2) select sourceCol1, sourceCol2 from sourceTable where condition; उदाहरण insert into demo83(id,username) select id,name from demo82 where id=101; परिणाम +------+----------+ | id | username | +------+----------+ | 101 | Bob | | 101 | David |