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

ორივე შეკითხვა ირჩევს აქტიურ მომხმარებლების შეკვეთებს, მაგრამ მუშაობს სხვადასხვა გზით.