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

Ҳарду суолҳо фармоишҳои муштариёни фаъолро интихоб мекунанд, аммо дар амал гуногун кор мекунанд.