Ana içeriğe geç
Kesit SQL
Orta · Küme ve Alt Sorgular

UNION, INTERSECT, EXCEPT

Sorgu sonuçlarını alt alta eklemek, kesişim ve fark.

Uygulamada aç, 8 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Küme işlemleri

JOIN tabloları yan yana birleştirir; küme işlemleri sorgu sonuçlarını alt alta birleştirir.

İşlemSonuç
UNIONİki sonucun birleşimi, tekrarlar atılır
UNION ALLBirleşim, tekrarlar korunur (daha hızlı)
INTERSECTHer ikisinde de olanlar
EXCEPTBirincide olup ikincide olmayanlar (Oracle'da MINUS)

Kurallar: Her iki sorgu aynı sayıda sütun döndürmeli ve tipler uyumlu olmalı. Sütun adları ilk sorgudan gelir. ORDER BY en sonda bir kez yazılır.

-- Şirketle ilişkili tüm kişiler: müşteri ve çalışanlar tek listede
SELECT first_name, last_name, 'Müşteri' AS tip FROM customers
UNION ALL
SELECT first_name, last_name, 'Çalışan' FROM employees
ORDER BY last_name
LIMIT 15;
-- Hem 2023'te hem 2024'te sipariş veren müşteriler
SELECT customer_id FROM orders WHERE order_date LIKE '2023%'
INTERSECT
SELECT customer_id FROM orders WHERE order_date LIKE '2024%';

Derinleş: küme işlemleri mi JOIN mi?

“Ekim'de gelip Kasım'da gelmeyen müşteriler” üç yolla yazılabilir: EXCEPT, NOT EXISTS ve LEFT JOIN ... IS NULL. EXCEPT en kısasıdır ama yalnızca seçtiğin sütunları döndürür ve tekrarları atar. Müşterinin adı gibi ek sütunlar gerekiyorsa NOT EXISTS daha esnektir.

SELECT customer_id FROM lk_orders WHERE placed_at < '2024-11-01'
EXCEPT
SELECT customer_id FROM lk_orders WHERE placed_at >= '2024-11-01' AND placed_at < '2024-12-01';
Alıştırmalara geç (8)