Intern
Mis on erinevus WHERE id IN (SELECT ...) ja WHERE EXISTS (SELECT ...)? IN võrdleb väärtusi tulemuste kogumiga, EXISTS kontrollib, kas on olemas vähemalt üks rida IN täidetakse iga välise päringu rea jaoks, EXISTS üks kord Erinevust ei ole IN töötab ainult numbritega, EXISTS iga tüüpi andmetega
sobes.tech AI
Vastus AI-lt
Õige vastus: IN võrdleb väärtusi tulemuste kogumiga, EXISTS kontrollib, kas vähemalt üks rida eksisteerib.
Alamküsitlus IN-iga tagastab read, kus väärtus vastab ükskõik millisele alamküsitluse poolt tagastatud väärtusele. Alamküsitlus EXISTS-iga kontrollib, kas vähemalt üks rida vastab tingimusele.
Erinevused:
- IN võrdleb konkreetseid väärtusi, EXISTS kontrollib ridade olemasolu.
- EXISTS on sageli tõhusam olemasolu kontrollimisel, eriti keerukates tingimustes.
Näide:
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');
Mõlemad päringud valivad aktiivsete klientide tellimused, kuid töötavad erinevalt.