Maison  >  Article  >  base de données  >  Comment pouvons-nous simuler une requête MySQL MINUS ?

Comment pouvons-nous simuler une requête MySQL MINUS ?

WBOY
WBOYavant
2023-09-09 14:49:061143parcourir

我们如何模拟 MySQL MINUS 查询?

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

Example

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 JOINS simulera MINUS pour renvoyer Student_info "studentid" value in , 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