โดยทั่วไป ตัวดำเนินการ MySQL UNION ใช้เพื่อรวมชุดผลลัพธ์ของคำสั่ง SELECT 2 ชุดขึ้นไป มันลบแถวที่ซ้ำกันระหว่างคำสั่ง SELECT ต่างๆ แต่ละคำสั่ง SELECT ภายในโอเปอเรเตอร์ UNION ต้องมีฟิลด์จำนวนเท่ากันในชุดผลลัพธ์ภายในชนิดข้อมูลที่คล้ายคลึงกัน ไวยากรณ์จะเป็นดังนี้ -
ไวยากรณ์
SELECT expression1, expression2, … expression_n FROM table [WHERE conditions] UNION [DISTINCT] SELECT expression1, expression2, … expression_n FROM table [WHERE conditions]
ที่นี่ expression1, expression2, … expression_n คือคอลัมน์ที่เราต้องการดึงออกมา
ตาราง คือตารางที่เราต้องการดึงข้อมูลบันทึก
เงื่อนไข WHERE เป็นทางเลือกที่จะต้องตรงตามสำหรับเรกคอร์ดที่จะเลือก
DISTINCT นอกจากนี้ยังเป็นทางเลือกที่จะลบรายการที่ซ้ำกันออกจากชุดผลลัพธ์ แต่การรวมตัวแก้ไข DISTINCT นั้นไม่มีผลกระทบต่อชุดผลลัพธ์ของตัวดำเนินการ UNION เนื่องจากโดยค่าเริ่มต้นตัวดำเนินการ UNION จะลบรายการที่ซ้ำกันไปแล้ว
ตัวอย่าง
ในตัวอย่างนี้ เราคือตารางสองตารางคือ Student_detail และ Student_info ซึ่งมีข้อมูลดังต่อไปนี้ -
mysql> Select * from Student_detail; +-----------+---------+------------+------------+ | studentid | Name | Address | Subject | +-----------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 130 | Ram | Jhansi | Computers | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | | 150 | Rajesh | Jaipur | Yoga | | 160 | Pradeep | Kochi | Hindi | +-----------+---------+------------+------------+ 7 rows in set (0.00 sec) mysql> Select * from Student_info; +-----------+-----------+------------+-------------+ | studentid | Name | Address | Subject | +-----------+-----------+------------+-------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 130 | Ram | Jhansi | Computers | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | | 165 | Abhimanyu | Calcutta | Electronics | +-----------+-----------+------------+-------------+ 6 rows in set (0.00 sec)
ตอนนี้ แบบสอบถามต่อไปนี้โดยใช้ตัวดำเนินการ UNION จะส่งกลับค่า 'studentid' ทั้งหมดทั้งสองตาราง
mysql> Select Studentid FROM student_detail UNION SELECT Studentid FROM student_info; +-----------+ | Studentid | +-----------+ | 101 | | 105 | | 130 | | 132 | | 133 | | 150 | | 160 | | 165 | +-----------+ 8 rows in set (0.00 sec)