UNION से मानों का सेट बनाएं
टेबल के बिना सीधे क्वेरी में पूर्णांकों का सेट बनाने के लिए UNION का उपयोग करें। यह अस्थायी टेस्ट डेटा या IN() क्लॉज के लिए मान सूची बनाने के लिए उपयोगी है।
सिंटैक्स
SELECT value1 UNION SELECT value2 UNION SELECT value3 ...;
उदाहरण
mysql> SELECT 1000 UNION SELECT 2000 UNION SELECT 3000
-> UNION SELECT 4000 UNION SELECT 5000 UNION SELECT 6000 UNION SELECT 7000;
+------+
| 1000 |
+------+
| 1000 |
| 2000 |
| 3000 |
| 4000 |
| 5000 |
| 6000 |
| 7000 |
+------+
UNION vs UNION ALL
| ऑपरेटर | व्यवहार | प्रदर्शन |
|---|---|---|
UNION | डुप्लीकेट हटाता है (DISTINCT) | धीमा |
UNION ALL | सभी पंक्तियां रखता है | तेज |
व्यावहारिक उपयोग
-- IN क्लॉज के लिए मान सूची
SELECT * FROM products WHERE id IN (
SELECT 100 UNION SELECT 200 UNION SELECT 300
);
-- टेस्ट डेटा उत्पन्न करना
SELECT * FROM (
SELECT 1 AS id, 'Product A' AS name UNION ALL
SELECT 2, 'Product B' UNION ALL
SELECT 3, 'Product C'
) AS test_data;
VALUES क्लॉज (MySQL 8.0.19+)
-- अधिक पठनीय सिंटैक्स
SELECT * FROM (VALUES ROW(1, 'A'), ROW(2, 'B'), ROW(3, 'C')) AS t(id, name);
सीक्वेंस जनरेट करना
बड़े सीक्वेंस के लिए रिकर्सिव CTE (MySQL 8.0+) बेहतर है:
WITH RECURSIVE seq(n) AS (
SELECT 1 UNION ALL SELECT n+1 FROM seq WHERE n < 1000
)
SELECT n FROM seq;