Sobes.tech
Intern

WHERE id IN (SELECT ...) va WHERE EXISTS (SELECT ...) o'rtasidagi kichik farq nima? IN qiymatlarni natijalar to'plami bilan solishtiradi, EXISTS kamida bitta satr mavjudligini tekshiradi IN tashqi so'rovning har bir satri uchun bajariladi, EXISTS esa bir marta Farq yo'q IN faqat raqamlar bilan ishlaydi, EXISTS har qanday turdagi bilan ishlaydi

sobes.tech AI

AIdan javob

To'g'ri javob: IN qiymatlarni natijalar to'plami bilan solishtiradi, EXISTS kamida bitta satr mavjudligini tekshiradi.

IN bilan kichik so'rov, qiymat kichik so'rovdan qaytarilgan har qanday qiymatga mos keladigan satrlarni qaytaradi. EXISTS bilan kichik so'rov, shartni qanoatlantiradigan kamida bitta satr mavjudligini tekshiradi.

Farqlar:

  • IN aniq qiymatlarni solishtiradi, EXISTS satrlarning mavjudligini tekshiradi.
  • EXISTS, ayniqsa murakkab shartlarda, mavjudlikni tekshirishda ko'pincha samaraliroq.

Misol:

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');

Ikkala so'rov ham faol mijozlarning buyurtmalarini tanlaydi, ammo ular turlicha ishlaydi.