MySQL
यूनिअन
खोज…
वाक्य - विन्यास
- चयन के संयोजन के बाद UNIST DISTINCT - समर्पण
- यूनिअन ऑल - नॉन डिडअप (तेज)
- UNION - डिफ़ॉल्ट DISTINCT है
- चयन करें ... यूनिअन चयन ... - ठीक है, लेकिन
ORDER BY
पर अस्पष्ट है - (Select ...) UNION (SELECT ...) ORDER BY ... - अस्पष्टता को हल करता है
टिप्पणियों
UNION कई CPU का उपयोग नहीं करता है।
यूनिअन हमेशा * परिणामों को इकट्ठा करने के लिए एक अस्थायी तालिका शामिल करता है। * 5.7.3 / मारियाडीबी 10.1 के अनुसार, यूनिअन के कुछ रूप एक tmp तालिका (इसलिए, तेज) का उपयोग किए बिना परिणाम प्रदान करते हैं।
यूनिअन के साथ सेलेक्ट स्टेटमेंट्स का संयोजन
आप UNION
कीवर्ड के साथ दो संरचित संरचित प्रश्नों के परिणामों को जोड़ सकते हैं।
उदाहरण के लिए, यदि आप दो अलग-अलग तालिकाओं, authors
और editors
से सभी संपर्क जानकारी की सूची चाहते हैं, उदाहरण के लिए, आप इस तरह से UNION
कीवर्ड का उपयोग कर सकते हैं:
select name, email, phone_number
from authors
union
select name, email, phone_number
from editors
अपने आप से union
का उपयोग करना डुप्लिकेट को छीन लेगा। यदि आपको अपनी क्वेरी में डुप्लिकेट रखने की आवश्यकता है, तो आप इस तरह से ALL
कीवर्ड का उपयोग कर सकते हैं: UNION ALL
।
द्वारा आदेश
यदि आपको UNION के परिणामों को क्रमबद्ध करना है, तो इस पैटर्न का उपयोग करें:
( SELECT ... )
UNION
( SELECT ... )
ORDER BY
कोष्ठक के बिना, अंतिम आदेश BY अंतिम चयन से संबंधित होगा।
OFFSET के माध्यम से पृष्ठ पर अंक लगाना
UNION में एक LITIT जोड़ते समय, यह उपयोग करने के लिए पैटर्न है:
( SELECT ... ORDER BY x LIMIT 10 )
UNION
( SELECT ... ORDER BY x LIMIT 10 )
ORDER BY x LIMIT 10
जब से तुम अनुमान नहीं लगा सकते जो चयन (रों) "10" से आएगा, आप प्रत्येक से 10 पाने के लिए, इस सूची में नीचे की आवश्यकता होगी तो आगे व्हिटल, दोनों दोहरा ORDER BY
और LIMIT
।
10 आइटम के 4 पेज के लिए, इस पैटर्न की आवश्यकता है:
( SELECT ... ORDER BY x LIMIT 40 )
UNION
( SELECT ... ORDER BY x LIMIT 40 )
ORDER BY x LIMIT 30, 10
यही है, प्रत्येक SELECT
में 4 पेज का मूल्य एकत्र SELECT
, फिर UNION
में OFFSET
करें।
विभिन्न स्तंभों के साथ डेटा का संयोजन
SELECT name, caption as title, year, pages FROM books
UNION
SELECT name, title, year, 0 as pages FROM movies
जब अलग-अलग कॉलम के साथ 2 रिकॉर्ड सेट को मिलाते हैं तो लापता मानों को डिफ़ॉल्ट मानों के साथ अनुकरण करते हैं।
यूनिअन ऑल और यूनिअन
1,22,44 यूनिअन का चयन करें 2,33,55 का चयन करें
2,22,44 यूनिअन का चयन करें 2,33,55 यूनिअन का चयन 2,33,55 का चयन करें
परिणाम ऊपर जैसा है।
सभी का उपयोग करें
कब
2,22,44 यूनिअन का चयन करें 2,33,55 यूनिअन का चयन करें सभी 2,33,55 का चयन करें
एक ही कॉलम के साथ अलग-अलग MySQL तालिकाओं पर डेटा को जोड़ना और विलय करना अद्वितीय पंक्तियों और रनिंग क्वेरी में
यह UNION ALL कई तालिकाओं से डेटा को जोड़ता है और आपके प्रश्नों के लिए उपयोग करने के लिए एक तालिका नाम अन्य नाम के रूप में कार्य करता है:
SELECT YEAR(date_time_column), MONTH(date_time_column), MIN(DATE(date_time_column)), MAX(DATE(date_time_column)), COUNT(DISTINCT (ip)), COUNT(ip), (COUNT(ip) / COUNT(DISTINCT (ip))) AS Ratio
FROM (
(SELECT date_time_column, ip FROM server_log_1 WHERE state = 'action' AND log_id = 150) UNION ALL
(SELECT date_time_column, ip FROM server_log_2 WHERE state = 'action' AND log_id = 150) UNION ALL
(SELECT date_time_column, ip FROM server_log_3 WHERE state = 'action' AND log_id = 150) UNION ALL
(SELECT date_time_column, ip FROM server_log WHERE state = 'action' AND log_id = 150)
) AS table_all
GROUP BY YEAR(date_time_column), MONTH(date_time_column);