Sobes.tech
Intern

Quelle est la différence entre une sous-requête dans WHERE id IN (SELECT ...) et une sous-requête avec WHERE EXISTS (SELECT ...)? IN compare les valeurs avec un ensemble de résultats, EXISTS vérifie la présence d'au moins une ligne IN s'exécute pour chaque ligne de la requête externe, EXISTS une seule fois Il n'y a pas de différence IN fonctionne uniquement avec des nombres, EXISTS avec tous les types

sobes.tech IA

Réponse de l'IA

Réponse correcte : IN compare les valeurs avec un ensemble de résultats, EXISTS vérifie la présence d'au moins une ligne.

La sous-requête avec IN renvoie des lignes où la valeur correspond à l'une des valeurs retournées par la sous-requête. La sous-requête avec EXISTS vérifie s'il existe au moins une ligne satisfaisant la condition.

Différences :

  • IN compare des valeurs spécifiques, EXISTS vérifie la présence de lignes.
  • EXISTS est souvent plus efficace pour vérifier l'existence, surtout dans des conditions complexes.

Exemple :

SELECT * FROM orders o
WHERE o.customer_id IN (SELECT c.id FROM customers c WHERE c.status = 'active');

SELECT * FROM orders o
WHERE EXISTS (SELECT 1 FROM customers c WHERE c.id = o.customer_id AND c.status = 'active');

Les deux requêtes sélectionnent des commandes de clients actifs, mais fonctionnent différemment.