Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เพิ่มค่าที่กำหนดเองในผลลัพธ์ Query ด้วย UNION ALL ใน MySQL

การเตรียมตารางและข้อมูล

mysql> CREATE TABLE DemoTable1847 (
    GameStatus ENUM('PENDING','COMPLETED','CANCELLED')
);

mysql> INSERT INTO DemoTable1847 VALUES('PENDING');
mysql> INSERT INTO DemoTable1847 VALUES('COMPLETED');
mysql> INSERT INTO DemoTable1847 VALUES('CANCELLED');

เพิ่มค่าที่กำหนดเองด้วย UNION ALL

mysql> SELECT * FROM DemoTable1847
    UNION ALL
    SELECT 'REFUND';

ผลลัพธ์:

+------------+
| GameStatus |
+------------+
| PENDING    |
| COMPLETED  |
| CANCELLED  |
| REFUND     |
+------------+

ความแตกต่างระหว่าง UNION และ UNION ALL

คำสั่งลักษณะการทำงาน
UNIONรวมผลลัพธ์และลบแถวซ้ำ (Distinct)
UNION ALLรวมผลลัพธ์ทั้งหมด รวมแถวซ้ำ (เร็วกว่า)

กรณีการใช้งาน

  • เพิ่มตัวเลือก "ทั้งหมด" ใน Dropdown/Select
  • เพิ่มแถวสรุป (Summary Row) ในรายงาน
  • เพิ่มค่า Default/Placeholder ที่ไม่ได้อยู่ในตาราง
  • รวมข้อมูลจากหลายตารางที่มีโครงสร้างเหมือนกัน

ข้อจำกัด

  • จำนวนคอลัมน์และลำดับต้องตรงกันทั้งสองฝั่ง
  • ชนิดข้อมูลควรเข้ากันได้ (Type Compatibility)
  • ไม่สามารถใช้ ORDER BY ได้โดยตรง (ต้องใช้ Subquery)