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');
Երկուսն էլ հարցումները ընտրում են ակտիվ հաճախորդների պատվերները, բայց աշխատում են տարբեր կերպ։