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 có mệnh đề WHERE?


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 với mệnh đề WHERE sẽ mô phỏng INTERSECT để trả về tất cả các giá trị ‘studentid’ lớn hơn 130 tồn tại trong cả hai bảng -

mysql> Select Student_detail.studentid FROM Student_detail WHERE student_detail.studentid >130 AND student_detail.studentid IN(SELECT Student_info.studentid FROM Student_info WHERE Student_detail.studentid > 0);
+-----------+
| studentid |
+-----------+
|       132 |
|       133 |
+-----------+
2 rows in set (0.00 sec)