UNION & UNION ALL

SQL Server เบื้องต้น

John MacKintosh

Instructor

SELECT 
  album_id, 
  title, 
  artist_id 
FROM album 
WHERE artist_id IN (1, 3)
+------------+-------------------------+------------|
| album_id   | title                   | artist_id  |
|------------+-------------------------|------------|
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 5          | Big Ones                | 3          |
+------------+----------+---------------------------+
SELECT 
  album_id, 
  title, 
  artist_id 
FROM album 
WHERE artist_id IN (1, 4, 5)
+------------+-------------------------+------------|
| album_id   | title                   | artist_id  |
|------------+-------------------------|------------|
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 6          | Jagged Little Pill      | 4          |
| 7          | Facelift                | 5          |
+------------+-------------------------+------------+
SQL Server เบื้องต้น

การรวมผลลัพธ์

SELECT 
  album_id, 
  title, 
  artist_id 
FROM album 
WHERE artist_id IN (1, 3)

UNION
SELECT album_id, title, artist_id FROM album WHERE artist_id IN (1, 4, 5);
+------------+-------------------------+------------|
| album_id   | title                   | artist_id  |
|------------+-------------------------|------------|
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 5          | Big Ones                | 3          |
| 6          | Jagged Little Pill      | 4          |
| 7          | Facelift                | 5          |
+------------+-------------------------+------------+
  • ไม่รวมแถวที่ซ้ำกัน
SQL Server เบื้องต้น

UNION ALL

SELECT 
  album_id, 
  title, 
  artist_id 
FROM album 
WHERE artist_id IN (1, 3) 
UNION ALL 
SELECT 
  album_id, 
  title, 
  artist_id 
FROM album 
WHERE artist_id IN (1, 4, 5);
+------------+-------------------------+------------|
| album_id   | title                   | artist_id  |
|------------+-------------------------|------------|
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 5          | Big Ones                | 3          |
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 6          | Jagged Little Pill      | 4          |
| 7          | Facelift                | 5          |
+------------+-------------------------+------------+
  • รวมแถวที่ซ้ำกันด้วย
SQL Server เบื้องต้น

การกำหนดชื่อคอลัมน์ใหม่สำหรับผลลัพธ์สุดท้าย

SELECT 
  album_id AS ALBUM_ID, 
  title AS ALBUM_TITLE, 
  artist_id AS ARTIST_ID 
FROM album 
WHERE artist_id IN(1, 3) 
UNION ALL 
SELECT 
  album_id AS ALBUM_ID, 
  title AS ALBUM_TITLE, 
  artist_id AS ARTIST_ID 
FROM album 
WHERE artist_id IN(1, 4, 5)
+------------+-------------------------+------------|
| ALBUM_ID   | ALBUM_TITLE             | ARTIST_ID  |
|------------+-------------------------|------------|
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 5          | Big Ones                | 3          |
| 1          | For Those About To Rock | 1          |
| 4          | Let There Be Rock       | 1          |
| 6          | Jagged Little Pill      | 4          |
| 7          | Facelift                | 5          |
+------------+-------------------------+------------+
SQL Server เบื้องต้น

สรุป

  • UNION หรือ UNION ALL: รวมคิวรีจากตารางเดียวกันหรือต่างตารางกัน

หากรวมข้อมูลจากตารางต่างกัน:

  • เลือกจำนวนคอลัมน์เท่ากันในลำดับเดียวกัน
  • คอลัมน์ควรมีชนิดข้อมูลเหมือนกัน

หากตารางต้นทางมีชื่อคอลัมน์ต่างกัน

  • ใช้ alias กำหนดชื่อคอลัมน์

UNION: ตัดแถวที่ซ้ำออก (ทำงานช้ากว่า)

UNION ALL: รวมแถวที่ซ้ำด้วย (ทำงานเร็วกว่า)

SQL Server เบื้องต้น

มาฝึกกันเถอะ!

SQL Server เบื้องต้น

Preparing Video For Download...