COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
25/ 65

İlişkiler ve JOIN

EXISTS ve NOT EXISTS

Verinin kendisinden önce varlığıyla ilgilen.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

EXISTS alt sorgu en az bir satır üretiyorsa TRUE olur. Seçilen değerin kendisi değil satırın varlığı önemlidir; SELECT 1 yaygın bir anlatım kalıbıdır. NOT EXISTS eşleşen satır bulunmadığını sınar.

Bir müşterinin sipariş verip vermediğini öğrenmek için JOIN ile satırları çoğaltıp DISTINCT kullanmak yerine EXISTS iş niyetini daha net anlatır. NOT EXISTS, NOT IN alt sorgusundaki NULL tuzağından ayrılır. Performans için tek bir kalıbı her zaman daha hızlı ilan etme; plan, indeks ve veri dağılımına bak.

NERESİNDE KULLANIRSIN?

Varlık, yokluk, satılmayan ürün ve eksik ilişki kontrollerinde.

SIK YAPILAN HATA

EXISTS içinde SELECT edilen değerin filtre sonucunu belirlediğini sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT c.FullName FROM lab.Customer AS c WHERE EXISTS (SELECT 1 FROM lab.SalesOrder AS o WHERE o.CustomerId = c.CustomerId);

Sipariş vermiş beş müşteri bulunur; müşteri tekrar etmez.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

Hiç sipariş vermeyen müşterileri NOT EXISTS ile bul.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT c.FullName FROM lab.Customer AS c WHERE NOT EXISTS (SELECT 1 FROM lab.SalesOrder AS o WHERE o.CustomerId = c.CustomerId);

Selin. Alt sorgudaki SELECT listesi satır varlığını değiştirmez.