Maison  >  Article  >  base de données  >  Comment utiliser MySQL LEFT JOIN pour simuler une requête MySQL MINUS ?

Comment utiliser MySQL LEFT JOIN pour simuler une requête MySQL MINUS ?

王林
王林avant
2023-09-16 11:09:15720parcourir

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

Puisque nous ne pouvons pas utiliser la requête MINUS dans MySQL, nous utiliserons LEFT JOIN pour simuler la requête MINUS. Cela peut être compris à l'aide de l'exemple suivant :

Exemple

Dans cet exemple, nous avons deux tables, à savoir Student_detail et Student_info avec les données suivantes -

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)

Maintenant, la requête suivante utilisant LEFT JOIN simulera MINUS pour renvoyer Student_info " studentid" dans , mais ne renvoie pas la valeur de la table Student_detail.

mysql> SELECT studentid from student_info LEFT JOIN Student_detail USING(studentid) WHERE student_detail.studentid IS NULL;
+-----------+
| studentid |
+-----------+
|       165 |
+-----------+
1 row in set (0.07 sec)

Maintenant, la requête suivante nous donnera le résultat opposé à la requête ci-dessus, c'est-à-dire qu'elle renverra la valeur "studentid" dans Student_detail mais ne renverra pas la valeur dans la table Student_info.

mysql> SELECT studentid from student_detail LEFT JOIN Student_info USING(studentid) WHERE student_info.studentid IS NULL;
+-----------+
| studentid |
+-----------+
|       150 |
|      160  |
+-----------+
2 rows in set (0.00 sec)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer