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

คำสั่ง SQL UNION: รวมผลลัพธ์จากหลายคิวรี่

เมื่อสืบค้นฐานข้อมูล คุณอาจต้องการรวมผลลัพธ์จากคำสั่ง SELECT หลายคำสั่งเข้าด้วยกัน เช่น ต้องการรายชื่อเมืองที่ลูกค้าอาศัยอยู่ และเมืองที่สาขาบริษัทตั้งอยู่ แทนที่จะรัน 2 คิวรี่แยกกัน สามารถรวมได้ในคิวรี่เดียวด้วยคำสั่ง SQL UNION

ออปอเรเตอร์ UNION ใช้รวมผลลัพธ์จาก SELECT 2 คำสั่งขึ้นไป ให้กลายเป็นชุดผลลัพธ์เดียว (single result set)

ในบทช่วยสอนนี้ เราจะแยกวิเคราะห์พื้นฐานของ SQL UNION และกรณีที่ควรนำไปใช้

บทนำสั้นๆ เกี่ยวกับคิวรี่ (Query Refresher)

โปรแกรมเมอร์ใช้คิวรี่เพื่อดึงข้อมูลจากฐานข้อมูล คิวรี่เกือบทุกครั้งเริ่มต้นด้วยคำสั่ง SQL SELECT และดึงข้อมูลตามเงื่อนไขที่กำหนด ปกติจะมีออปอเรเตอร์ FROM ระบุตารางที่จะสืบค้น รวมถึงออปอเรเตอร์อื่นๆ สำหรับกรองข้อมูล

ไวยากรณ์ทั่วไปของคิวรี่ SQL:

SELECT column_name FROM table_name WHERE your_condititions_are_met;

ตัวอย่างคิวรี่ดึงชื่อพนักงานทั้งหมด:

SELECT name FROM employees;

ผลลัพธ์:

name
Luke
Mike
Hannah
Geoff
Alexis
Emma
Jonah

(7 แถว)

หากต้องการดึงหลายคอลัมน์ ให้คั่นชื่อคอลัมน์ด้วยจุลภาค หรือใช้ * เพื่อดึงทุกคอลัมน์

SQL UNION

ออปอเรเตอร์ SQL UNION รวมผลลัพธ์จาก 2 คิวรี่ขึ้นไป ให้เป็นตารางเดียว

เงื่อนไขในการใช้ UNION 2 ข้อ:

  1. ชนิดข้อมูลของคอลัมน์ต้องเข้ากันได้ (compatible) - เช่นถ้า salary เป็น integer ในตารางหนึ่ง และ float ในอีกตาราง UNION จะไม่ทำงาน
  2. จำนวนและลำดับของคอลัมน์ต้องเหมือนกันในทุกคิวรี่

ไวยากรณ์คิวรี่ UNION:

SELECT column_name FROM table1_name UNION SELECT column_name FROM table2_name;

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

สมมติเราต้องการส่งประกาศให้ลูกค้าทุกคน และพนักงานทุกคน เราสามารถดึงอีเมลทั้งสองกลุ่มมารวมกันได้:

SELECT name, email FROM employees UNION SELECT name, email FROM customers;

ผลลัพธ์:

name email
Emmaemma.a@gmail.com
Jonahjonah.h@gmail.com
Hannahhannah.y@gmail.com
Lukeluke.e@gmail.com
Johnjohn.p@outlook.com
Geoffgeoff.l@gmail.com
Alexisalexis.e@gmail.com
Fredfred.s@gmail.com
Erinerin.a@gmail.com
Katykaty.l@gmail.com
Anneanne.s@gmail.com
Tomtom.h@gmail.com
Mikemike.h@gmail.com
Hannahhannah.p@gmail.com

(14 แถว)

สังเกตว่า UNION จะ ลบแถวซ้ำ (duplicate rows) ออกจากผลลัพธ์สุดท้าย หากมีพนักงานที่เป็นลูกค้าพร้อมกัน ข้อมูลจะแสดงเพียงครั้งเดียว

หากต้องการรวมแถวซ้ำด้วย ให้เพิ่มคีย์เวิร์ด ALL:

SELECT name, email FROM employees UNION ALL SELECT name, email FROM customers;

สรุป

ในบทช่วยสอนนี้ เราได้แยกวิเคราะห์การใช้งานออปอเรเตอร์ UNION บน SQL server ตามที่อธิบายไว้ UNION ใช้ดึงข้อมูลจาก 2 ตารางและรวมเป็นตารางเดียว เช่น หากต้องการรายชื่อที่อยู่ของผู้จัดจำหน่ายและผู้จัดจำหน่ายย่อยที่เก็บในตารางต่างกัน สามารถใช้คิวรี่ UNION ได้