Sobes.tech
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.