Sobes.tech
Intern

WHERE id IN (SELECT ...) жана WHERE EXISTS (SELECT ...) арасындагы айырма эмнеде? IN натыйжалар топтому менен баалуулуктарды салыштырат, EXISTS кеминде бир сап бар экенин текшерет IN тышкы суроонун ар бир сапы үчүн иштейт, EXISTS бир жолу Айырмасы жок IN гана сандар менен иштейт, EXISTS бардык түрлөр менен иштейт

sobes.tech AI

AIден жооп

Туура жооп: IN баалуулуктарды натыйжалар топтому менен салыштырат, EXISTS кеминде бир сап бар экенин текшерет.

IN менен кичи суроо, баалуулук кичи суроодон кайтарылган ар кандай баалуулукка туура келген саптарды кайтарат. EXISTS менен кичи суроо, шартты канааттандырган кеминде бир сап бар экенин текшерет.

Аермалар:

  • IN конкреттүү баалуулуктарды салыштырса, EXISTS саптардын бар-жогун текшерет.
  • EXISTS көбүнчө бар экенин текшерүүдө натыйжалуу, өзгөчө кыйын шарттарда.

Мисал:

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

Эки суроо да актив кардарлардын буйрутмаларын тандоого мүмкүндүк берет, бирок иштөө ыкмасы ар башка.