MySQL 如何使用LEFT JOIN模拟MySQL MINUS查询

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秒)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程