Intern
Mi a különbség a WHERE id IN (SELECT ...) alárendelt lekérdezés és a WHERE EXISTS (SELECT ...) alárendelt lekérdezés között? Az IN összehasonlítja az értékeket egy eredményhalmazzal, az EXISTS ellenőrzi, hogy van-e legalább egy sor Az IN minden külső lekérdezés sorára fut, az EXISTS egyszer Nincs különbség Az IN csak számokkal működik, az EXISTS bármilyen típussal
sobes.tech MI
Válasz az MI-től
Helyes válasz: Az IN összehasonlítja az értékeket egy eredményhalmazzal, az EXISTS pedig ellenőrzi, hogy legalább egy sor létezik-e.
Az IN al-lekérdezés olyan sorokat ad vissza, ahol az érték megfelel a lekérdezés által visszaadott bármely értéknek. Az EXISTS ellenőrzi, hogy létezik-e legalább egy olyan sor, amely megfelel a feltételnek.
Különbségek:
- Az IN konkrét értékeket hasonlít össze, az EXISTS a sorok létezését ellenőrzi.
- Az EXISTS gyakran hatékonyabb a létezés ellenőrzésében, különösen összetett feltételeknél.
Példa:
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');
Mindkét lekérdezés az aktív ügyfelek rendeléseit választja ki, de különböző módon működnek.