Sobes.tech
Intern

WHERE id IN (SELECT ...) alt WHERE EXISTS (SELECT ...) altındaki alt sorgu arasındaki fark nedir? IN, sonuç kümesiyle değerleri karşılaştırır, EXISTS en az bir satırın varlığını kontrol eder IN, dış sorgunun her satırı için çalışır, EXISTS ise bir kez Fark yok IN sadece sayılarla çalışır, EXISTS ise her türlü veri tipiyle

sobes.tech yapay zeka

AI'dan gelen yanıt

Doğru cevap: IN, değerleri sonuç kümesiyle karşılaştırır, EXISTS en az bir satırın var olup olmadığını kontrol eder.

IN ile alt sorgu, değerin alt sorgudan dönen herhangi bir değere eşit olduğu satırları döndürür. EXISTS ile alt sorgu, en az bir satırın koşulu sağlayıp sağlamadığını kontrol eder.

Farklar:

  • IN belirli değerleri karşılaştırır, EXISTS satırların varlığını kontrol eder.
  • EXISTS, özellikle karmaşık koşullarda, varlığı kontrol etmede genellikle daha etkilidir.

Örnek:

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

Her iki sorgu da aktif müşterilerin siparişlerini seçer, ancak farklı şekilde çalışır.