MySQL 如何使用LEFT JOIN模拟MySQL MINUS查询
由于MySQL中不能使用MINUS查询,因此我们将使用LEFT JOIN来模拟MINUS查询。下面的示例可以帮助理解:
阅读更多:MySQL 教程
示例
在此示例中,我们有两个表,分别是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行(0.00秒)
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行(0.00秒)
现在,下面的使用LEFT JOIN的查询将模拟MINUS查询以返回student_info表中但不在Student_detail表中的“studentid”值。
mysql> SELECT studentid from student_info LEFT JOIN Student_detail USING(studentid) WHERE student_detail.studentid IS NULL;
+-----------+
| studentid |
+-----------+
| 165 |
+-----------+
1行(0.07秒)
现在,下面的查询将返回上面查询的相反结果,即它将返回student_detail表中但不在Student_info表中的“studentid”值。
mysql> SELECT studentid from student_detail LEFT JOIN Student_info USING(studentid) WHERE student_info.studentid IS NULL;
+-----------+
| studentid |
+-----------+
| 150 |
| 160 |
+-----------+
2行(0.00秒)