Intern
Care este diferența dintre o subinterogare în WHERE id IN (SELECT ...) și o subinterogare cu WHERE EXISTS (SELECT ...)? IN compară valorile cu un set de rezultate, EXISTS verifică dacă există cel puțin un rând IN se execută pentru fiecare rând al interogării externe, EXISTS o singură dată Nu există diferență IN funcționează doar cu numere, EXISTS cu orice tip
sobes.tech AI
Răspuns de la AI
Răspunsul corect: IN compară valorile cu un set de rezultate, EXISTS verifică dacă există cel puțin un rând.
Subinterogarea cu IN returnează rânduri unde valoarea corespunde oricărei valori returnate de subinterogare. Subinterogarea cu EXISTS verifică dacă există cel puțin un rând care satisface condiția.
Diferențe:
- IN compară valori specifice, EXISTS verifică existența rândurilor.
- EXISTS este adesea mai eficient pentru verificarea existenței, mai ales în condiții complexe.
Exemplu:
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');
Ambele interogări selectează comenzile clienților activi, dar funcționează diferit.