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

Երկուսն էլ հարցումները ընտրում են ակտիվ հաճախորդների պատվերները, բայց աշխատում են տարբեր կերպ։