MySQL UNION – บทช่วยสอนที่สมบูรณ์

สหภาพคืออะไร?

Unions จะรวมผลลัพธ์จากการสืบค้น SELECT หลายรายการเข้าเป็นชุดผลลัพธ์แบบรวม

ข้อกำหนดเพียงอย่างเดียวในการทำงานคือจำนวนคอลัมน์ควรเท่ากันจากแบบสอบถาม SELECT ทั้งหมดที่ต้องนำมารวมกัน

สมมติว่าเรามีตารางอยู่ 2 ตารางดังนี้

MySQL ยูเนี่ยนMySQL ยูเนี่ยน

ตอนนี้เรามาสร้างแบบสอบถาม UNION เพื่อรวมทั้งสองตารางโดยใช้ DISTINCT

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

ที่นี่แถวที่ซ้ำกันจะถูกลบออกและส่งคืนเฉพาะแถวที่ไม่ซ้ำเท่านั้น

ยูเนี่ยนที่แตกต่าง

หมายเหตุ MySQL ใช้ส่วนคำสั่ง DISTINCT เป็นค่าเริ่มต้นเมื่อดำเนินการค้นหา UNION หากไม่มีการระบุสิ่งใด

ตอนนี้เรามาสร้างแบบสอบถาม UNION เพื่อรวมทั้งสองตารางโดยใช้ ALL

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

รวมแถวที่ซ้ำกันไว้ที่นี่และเนื่องจากเราใช้ ALL

ยูเนี่ยน-ทั้งหมด

ทำไมต้องใช้ยูเนี่ยน?

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

สรุป

  • คำสั่ง UNION ใช้เพื่อรวมผลลัพธ์แบบสอบถาม SELECT มากกว่าหนึ่งรายการให้เป็นแบบสอบถามเดียวที่มีแถวจากแบบสอบถามที่เลือกทั้งหมด
  • จำนวนคอลัมน์และชนิดข้อมูลใน คำสั่ง SELECT จะต้องเหมือนกันเพื่อให้คำสั่ง UNION ทำงานได้
  • ส่วนคำสั่ง DISTINCT ใช้เพื่อกำจัดค่าที่ซ้ำกันออกจากชุดผลลัพธ์เคียวรี UNION MySQL ใช้คำสั่งย่อย DISTINCT เป็นค่าเริ่มต้นเมื่อดำเนินการเคียวรี UNION หากไม่มีการระบุสิ่งใด
  • ส่วนคำสั่ง ALL ใช้เพื่อส่งคืนแถวที่ซ้ำกันทั้งหมดในการสืบค้น UNION

ตัวอย่างการใช้งานจริง MySQL ปรับแต่ง

ใน myFlixDB ของเรา ให้รวมเข้าด้วยกัน

Members_number และ full_names จากตารางสมาชิก

กับ

movie_id และชื่อจากตารางภาพยนตร์

เราสามารถใช้ Query ดังต่อไปนี้

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

ดำเนินการสคริปต์ข้างต้นใน MySQL ปรับแต่ง เมื่อเปรียบเทียบกับ myflixdb เราจะพบผลลัพธ์ดังแสดงข้างล่างนี้

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men