Intern
WHERE id IN (SELECT ...) və WHERE EXISTS (SELECT ...) arasındakı fərq nədir? IN nəticələr to'plami bilan qiymatlarni solishtiradi, EXISTS ən az bir satrın mövcudluğunu yoxlayır IN xarici sorğunun hər sətiri üçün işləyir, EXISTS isə bir dəfə Fərq yoxdur IN yalnız sayılarla işləyir, EXISTS hər hansı bir növ ilə işləyir
sobes.tech Süni İntellekt
AI-dan cavab
Düzgün cavab: IN nəticə dəstəsi ilə dəyərləri müqayisə edir, EXISTS ən azı bir sətirin mövcud olub-olmadığını yoxlayır.
IN ilə alt sorğu, dəyər alt sorğudan qaytarılan hər hansı bir dəyərə uyğun olan sətirləri qaytarır. EXISTS ilə alt sorğu, şərti ödəyən ən azı bir sətirin mövcud olub-olmadığını yoxlayır.
Fərqlər:
- IN konkret dəyərləri müqayisə edir, EXISTS sətirlərin mövcudluğunu yoxlayır.
- EXISTS, xüsusən mürəkkəb şərtlərdə, mövcudluğu yoxlamaqda daha səmərəlidir.
Nümunə:
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');
Hər iki sorğu aktiv müştərilərin sifarişlərini seçir, amma fərqli işləyirlər.