📄
Text
·
25 min
INTERSECT ve EXCEPT
Giriş — Küme İşlemleri
UNION birleşim (union) yapıyordu. INTERSECT kesişim, EXCEPT fark işlemi yapar. MySQL 8.0.31+ sürümlerinde desteklenir, eski sürümlerde alternatif yöntemler kullanılır.
INTERSECT — Kesişim
Her iki sorguda da bulunan satırlar:
-- MySQL 8.0.31+
SELECT customer_id FROM orders WHERE status = 'delivered'
INTERSECT
SELECT customer_id FROM orders WHERE total_amount > 10000;
-- Hem teslim edilmiş HEM de 10000+ TL olan siparişlerin müşterileri
-- Eski MySQL alternatifi: INNER JOIN veya IN
SELECT DISTINCT o1.customer_id
FROM orders o1
WHERE o1.status = 'delivered'
AND o1.customer_id IN (
SELECT customer_id FROM orders WHERE total_amount > 10000
);EXCEPT — Fark
İlk sorguda olup ikincisinde olmayan satırlar:
-- MySQL 8.0.31+
SELECT customer_id FROM customers
EXCEPT
SELECT customer_id FROM orders;
-- Sipariş vermemiş müşteriler
-- Eski MySQL alternatifi: LEFT JOIN + IS NULL veya NOT EXISTS
SELECT c.customer_id FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
WHERE o.customer_id IS NULL;Pratik Kullanım
-- İstanbul'da ama Ankara'da olmayan ürünleri satan satıcılar (kavramsal)
SELECT product_id FROM istanbul_warehouse
EXCEPT
SELECT product_id FROM ankara_warehouse;
-- Her iki depoda da bulunan ürünler
SELECT product_id FROM istanbul_warehouse
INTERSECT
SELECT product_id FROM ankara_warehouse;Özet
INTERSECT: her iki sorguda da olan satırlar (kesişim)
EXCEPT: ilk sorguda olup ikincisinde olmayan satırlar (fark)
MySQL 8.0.31+ destekler, eski sürümlerde IN/NOT IN veya JOIN ile emüle et
Alternatifler: INNER JOIN (INTERSECT), LEFT JOIN + IS NULL (EXCEPT), NOT EXISTS (EXCEPT)
AI Asistan
Sorularını yanıtlamaya hazır