MySQL UNION – บทช่วยสอนที่สมบูรณ์
สหภาพคืออะไร?
Unions จะรวมผลลัพธ์จากการสืบค้น SELECT หลายรายการเข้าเป็นชุดผลลัพธ์แบบรวม
ข้อกำหนดเพียงอย่างเดียวในการทำงานคือจำนวนคอลัมน์ควรเท่ากันจากแบบสอบถาม SELECT ทั้งหมดที่ต้องนำมารวมกัน
สมมติว่าเรามีตารางอยู่ 2 ตารางดังนี้
ตอนนี้เรามาสร้างแบบสอบถาม 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 |