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

เลือกและแสดงรายการค่าจาก 2 คอลัมน์รวมกันในคอลัมน์เดียวด้วย UNION ALL ใน MySQL

เมื่อต้องการนำค่าจาก 2 คอลัมน์ (หรือมากกว่า) มารวมแสดงในคอลัมน์เดียว สามารถใช้คำสั่ง UNION ALL ได้ ซึ่งจะรวมผลลัพธ์จากหลาย SELECT เข้าด้วยกันโดยไม่ลบแถวซ้ำ (ต่างจาก UNION ที่จะลบซ้ำ)

Syntax

SELECT column1 AS alias FROM table_name
UNION ALL
SELECT column2 AS alias FROM table_name;

ตัวอย่างการใช้งาน

1. สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable1813 ( Name1 varchar(20), Name2 varchar(20) ); Query OK, 0 rows affected (0.00 sec)

mysql> insert into DemoTable1813 values('John','Chris'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1813 values('Adam','Robert'); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1813 values('Mike','Sam'); Query OK, 1 row affected (0.00 sec)

ข้อมูลต้นฉบับ:

mysql> select * from DemoTable1813;
+-------+--------+
| Name1 | Name2  |
+-------+--------+
| John  | Chris  |
| Adam  | Robert |
| Mike  | Sam    |
+-------+--------+
3 rows in set (0.00 sec)

2. ใช้ UNION ALL รวมค่าจาก Name1 และ Name2

mysql> select Name1 as Name from DemoTable1813
    -> union all
    -> select Name2 as Name from DemoTable1813;

ผลลัพธ์:

+--------+
| Name   |
+--------+
| John   |
| Adam   |
| Mike   |
| Chris  |
| Robert |
| Sam    |
+--------+
6 rows in set (0.00 sec)

UNION vs UNION ALL

คำสั่งลบแถวซ้ำประสิทธิภาพใช้เมื่อไหร่
UNIONใช่ช้ากว่า (ต้องตรวจสอบซ้ำ)ต้องการค่าที่ไม่ซ้ำกัน
UNION ALLไม่เร็วกว่าต้องการค่าทั้งหมด รวมซ้ำได้

การประยุกต์ใช้: รวม 3 คอลัมน์ขึ้นไป

SELECT Name1 AS Name FROM DemoTable1813
UNION ALL
SELECT Name2 AS Name FROM DemoTable1813
UNION ALL
SELECT Name3 AS Name FROM DemoTable1813;

สรุป: ใช้ UNION ALL เพื่อรวมค่าจากหลายคอลัมน์/ตารางในคอลัมน์เดียว เร็วกว่า UNION เพราะไม่ตรวจสอบค่าซ้ำ เหมาะสำหรับรายงานหรือการนำออกสู่ไฟล์