Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะใช้ตัวดำเนินการ MySQL UNION กับชุดข้อมูลได้อย่างไร


โดยทั่วไป ตัวดำเนินการ 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)