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

सेट ऑपरेटरों (यूनियन) का उपयोग किए बिना चुनिंदा प्रश्नों के परिणामों का संयोजन

मान लें कि आपके पास दो टेबल हैं जिन्हें आप UNION . करना चाहते हैं

CREATE TABLE Table1
(`id` int, `name` varchar(32));
CREATE TABLE Table2
(`id` int, `name` varchar(32));

और नमूना डेटा

तालिका1:

| ID |  NAME |
|----|-------|
|  1 | name1 |
|  2 | name2 |
|  3 | name3 |

तालिका2:

| ID |  NAME  |
|----|--------|
| 11 | name11 |
| 22 | name22 |
| 33 | name33 |
|  1 |  name1 |

UNION ALL . का अनुकरण करने के लिए

SELECT COALESCE(t1.id, t2.id) id,
       COALESCE(t1.name, t2.name) name
  FROM 
(
  SELECT TABLE_NAME <> 'table1' n
    FROM INFORMATION_SCHEMA.TABLES
   WHERE TABLE_SCHEMA = SCHEMA()
     AND TABLE_NAME IN('table1', 'table2')
) t LEFT JOIN table1 t1 
    ON t.n = 0 LEFT JOIN table2 t2
    ON t.n = 1 

आउटपुट:

| ID |   NAME |
|----|--------|
|  1 |  name1 |
|  2 |  name2 |
|  3 |  name3 |
| 11 | name11 |
| 22 | name22 |
| 33 | name33 |
|  1 |  name1 |

UNION का अनुकरण करने के लिए आपको बस DISTINCT जोड़ने की जरूरत है

SELECT DISTINCT COALESCE(t1.id, t2.id) id,
       COALESCE(t1.name, t2.name) name
  FROM 
(
  SELECT TABLE_NAME <> 'table1' n
    FROM INFORMATION_SCHEMA.TABLES
   WHERE TABLE_SCHEMA = SCHEMA()
     AND TABLE_NAME IN('table1', 'table2')
) t LEFT JOIN table1 t1 
    ON t.n = 0 LEFT JOIN table2 t2
    ON t.n = 1 

आउटपुट:

| ID |   NAME |
|----|--------|
|  1 |  name1 |
|  2 |  name2 |
|  3 |  name3 |
| 11 | name11 |
| 22 | name22 |
| 33 | name33 |

यह रहा SQLFiddle डेमो



  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 में सेकंड के बिना दिनांक और समय का चयन करने के लिए?

  2. एम:एन संबंध के साथ एसक्यूएल चयन

  3. छवि अपलोड, अजाक्स, php, mysql

  4. PHP और mySQL में सिंगल स्टेटमेंट में कई अपडेट क्वेरी कैसे चलाएं?

  5. एकाधिक तालिकाओं में डेटा के बड़े सेट को कैसे पुनर्प्राप्त करें और लूपिंग प्रश्नों से कैसे बचें