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?


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ử IN để 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ử IN sẽ mô phỏng INTERSECT để trả về tất cả các giá trị ‘studentid’ tồn tại trong cả hai bảng -

mysql> Select Student_detail.studentid FROM Student_detail WHERE student_detail.studentid IN(SELECT Student_info.studentid FROM Student_info);
+-----------+
| studentid |
+-----------+
| 101       |
| 105       |
| 130       |
| 132       |
| 133       |
+-----------+
5 rows in set (0.06 sec)