Intern
Wat is het verschil tussen een subquery in WHERE id IN (SELECT ...) en een subquery met WHERE EXISTS (SELECT ...)? IN vergelijkt de waarden met een resultaatset, EXISTS controleert of er minstens één rij is IN wordt uitgevoerd voor elke rij van de externe query, EXISTS één keer Er is geen verschil IN werkt alleen met getallen, EXISTS met elk type
sobes.tech AI
Antwoord van AI
Juiste antwoord: IN vergelijkt waarden met een resultaatset, EXISTS controleert of er ten minste één rij bestaat.
De subquery met IN geeft rijen terug waar de waarde overeenkomt met een van de waarden die door de subquery worden geretourneerd. De subquery met EXISTS controleert of er ten minste één rij bestaat die aan de voorwaarde voldoet.
Verschillen:
- IN vergelijkt specifieke waarden, EXISTS controleert op het bestaan van rijen.
- EXISTS is vaak efficiënter bij het controleren op bestaan, vooral bij complexe voorwaarden.
Voorbeeld:
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');
Beide queries selecteren bestellingen van actieve klanten, maar werken op verschillende manieren.