การสร้างชุดตัวเลข (Number Set) ใน MySQL ด้วย UNION
ใช้ UNION รวมผลลัพธ์ของหลาย SELECT ค่าคงที่ เพื่อสร้างชุดตัวเลข (Automatically DISTINCT)
SELECT val1 UNION SELECT val2 UNION SELECT val3 ...
ตัวอย่างการใช้งาน
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 = UNION DISTINCT (ลบซ้ำอัตโนมัติ) | ใช้ UNION ALL หากต้องการเก็บซ้ำ (เร็วกว่า)
การประยุกต์ใช้จริง (สร้าง Sequence):
- MySQL 8.0+:
WITH RECURSIVE nums(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM nums WHERE n < 100) SELECT * FROM nums; - ตาราง Numbers (Tally Table) - สร้างไว้ 1 ครั้ง ใช้ซ้ำได้
SELECT seq FROM seq_1_to_100(MariaDB)
กรณีต้องการ WHERE IN ชุดค่า:
SELECT * FROM table WHERE id IN (SELECT 1000 UNION SELECT 2000 UNION SELECT 3000);