การใช้ SUBSTR() และ UNION ALL
SUBSTR(str, start, len) ดึงส่วนของสตริง UNION ALL รวมผลลัพธ์จากหลาย SELECT (เก็บ Duplicate ไว้)
ตัวอย่าง
mysql> create table DemoTable856(Title text);
Query OK, 0 rows affected (0.89 sec)
mysql> insert into DemoTable856 values('Introduction to MySQL');
mysql> insert into DemoTable856 values('Java in depth');
mysql> insert into DemoTable856 values('C++ with Data Structure');
คำสั่ง: ดึง 12 ตัวแรก และ 4 ตัวแรก แล้วรวมกัน
mysql> select substr(Title, 1, 12) from DemoTable856
UNION ALL
select substr(Title, 1, 4) from DemoTable856;
ผลลัพธ์ (6 แถว):
+--------------------+
| substr(Title,1,12) |
+--------------------+
| Introduction |
| Java in dept |
| C++ with Dat |
| Intr |
| Java |
| C++ |
+--------------------+
UNION vs UNION ALL
| คำสั่ง | พฤติกรรม | ประสิทธิภาพ |
|---|---|---|
UNION | ลบแถวซ้ำ (DISTINCT) | ช้ากว่า (ต้อง Sort/Hash) |
UNION ALL | เก็บทุกแถว (รวมซ้ำ) | เร็วกว่า |
การใช้งานจริง
-- รวมผลลัพธ์จากตารางต่างกัน
SELECT name FROM customers UNION ALL SELECT name FROM vendors;
-- เพิ่มคอลัมน์แยกแหล่งที่มา
SELECT 'customer' as source, name FROM customers
UNION ALL
SELECT 'vendor' as source, name FROM vendors;
สรุป
ใช้ SUBSTR() ดึงส่วนของข้อความ UNION ALL รวมผลลัพธ์หลายคิวรี่ ใช้ UNION ALL เมื่อไม่ต้องลบซ้ำ เพื่อประสิทธิภาพ