Dans Oracle, « n'existe pas » est utilisé pour déterminer si une clause renvoie un ensemble de résultats. Si la clause renvoie un ensemble de résultats, elle est fausse. Si la clause ne renvoie pas d'ensemble de résultats, elle est vraie. "sélectionnez * à partir de Daul là où il n'existe pas (condition de requête de sous-phrase)".
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.
exists : l'accent est mis sur l'opportunité de renvoyer l'ensemble de résultats, et il n'est pas nécessaire de savoir ce qui est renvoyé. Par exemple :
select name from student where sex = 'm' and mark exists(select 1 from grade where ...)
Tant que le guide existe. La clause renvoie le jeu de résultats, alors la condition existe est considérée comme vraie. Maintenant, veuillez noter que le champ renvoyé est toujours 1. S'il est modifié par "sélectionner 2 à partir de la note où...", alors le champ renvoyé est 2. Ceci le nombre n’a aucun sens. Ainsi, la clause exist ne se soucie pas de ce qui est renvoyé, mais de savoir si un jeu de résultats est renvoyé.
La plus grande différence entre exist et in est que la clause in ne peut renvoyer qu'un seul champ, par exemple :
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
La clause in renvoie trois champs, ce qui est incorrect. La clause existe n'en autorise qu'un. champ à renvoyer. Vous pouvez simplement sélectionner deux champs quelconques dans 1, 2 et 3.
Et ne pas exister et pas dans sont les opposés de existe et dans respectivement.
existe (sql renvoie le jeu de résultats comme vrai)
n'existe pas (sql ne renvoie pas le jeu de résultats comme vrai)
Le processus de non-existence est décrit en détail ci-dessous :
est comme suit :
Tableau A
ID NOM
1 A1
2 A2
3 A3
Tableau B
ID AID NOM
1 1 1 B1
2 2 B2
3 2 3
Tableau A et le tableau B sont une relation 1 à plusieurs A.ID => B.AID
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)
Le résultat de l'exécution est
1 A1
2 A2
La raison peut être analysée comme suit
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) --->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据 SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) --->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据
N'EXISTE PAS C'est le dans l'autre sens
SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
Le résultat de l'exécution est
3 A3
EXISTS = IN, la signification est la même mais il y a une légère différence de syntaxe Il semble que l'efficacité de l'utilisation de IN soit moindre, ce qui peut en être la raison. pourquoi l'index ne sera pas exécuté.
SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B)
NOT EXISTS = NOT IN, la signification est la même mais il y a une légère différence de syntaxe
SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)
Oui Parfois, nous rencontrerons des situations où nous devons sélectionner une certaine colonne sans duplication, utilisez une certaine colonne comme condition de sélection et d'autres colonnes à afficher normalement
Tutoriel recommandé : "Tutoriel vidéo Oracle"
.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!