Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể mô phỏng truy vấn INTERSECT của MySQL trả về nhiều biểu thức?


Vì chúng ta không thể sử dụng truy vấn INTERSECT trong MySQL, chúng ta sẽ sử dụng toán tử EXIST để mô phỏng truy vấn INTERSECT. Nó có thể được hiểu với sự trợ giúp của ví dụ sau -

Ví dụ

Trong ví dụ này, chúng ta có hai bảng là Student_detail và Student_info có dữ liệu sau -

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)

Bây giờ, truy vấn sau sử dụng toán tử EXIST với mệnh đề WHERE sẽ mô phỏng INTERSECT để trả về ‘studentid’, Name, Address mà tên không phải là ‘Yashpal’ tồn tại trong cả hai bảng -

mysql>Select Student_detail.studentid,Student_detail.name, student_detail.address FROM student_detail WHERE Student_detail.studentid >100 AND EXISTS (SELECT * FROM Student_info WHERE Student_info.Name <> 'Yashpal' AND Student_info.studentid = Student_detail.studentid AND Student_info.name = Student_detail.name);
+-----------+--------+------------+
| studentid | name   | address    |
+-----------+--------+------------+
|       105 | Gaurav | Chandigarh |
|       130 | Ram    | Jhansi     |
|       132 | Shyam  | Chandigarh |
|       133 | Mohan  | Delhi      |
+-----------+--------+------------+
4 rows in set (0.00 sec)