2011-11-03 27 views
8

Ben iki basit tablolar vardır: (burada sadece "id" sütunu)İki SQL tablosunu karşılaştırın ve eksik kimlikleri döndürün?

table1:

id 
1 
2 
3 
4 

table2:

id 
2 
4 

sql sorgusu eksik iki tablo karşılaştırmak gerekir " id "tablo2'de ve dönüş: 1,2

herhangi bir fikir? :) TY

+0

Şimdiye kadar, tüm cevaplar sadece tablo1'de hangi ID'lerin tablo2'de eksik olduğunu gösteriyor. Tablo1'de sütun1'de eksik olanları döndürecek bir sorguya ihtiyacınız var mı? –

+0

Merhaba Paul, sadece bir yol ihtiyacım olan şey. – MilMike

+1

Anahtar kelime 'EXCEPT'. MySQL bu işlemi desteklemez, ancak aramalarda kullanmak, işler ve ek yaklaşımlar için çok sayıda sonuç döndürecektir. (Bu soru zaman zaman ortaya çıkmaktadır.) –

cevap

26

cilde birkaç yolu bu kedi vardır:

SELECT table1.ID 
FROM  table1 
WHERE  table1.ID NOT IN(SELECT table2.ID FROM table2) 

Yoksa sol dış kullanabilirsiniz katılmak:

SELECT   table1.ID 
FROM   table1 
LEFT OUTER JOIN table2 ON table1.ID = table2.ID 
WHERE   table2.ID IS NULL 
+0

İlk sorguda tablo adı öneklerini kullanmanızı öneririm. Bu, hangi ID alanını kastettiğinizi açıklığa kavuşturmak içindir. sonra. – Polynomial

+0

@Polynomial, kabul edildi ve güncellendi. –

+1

yıl önce. Ama yine de yardım ederim. Şansınızı buldum: D thx –

2
select t1.* 
from table1 t1 
left outer join table2 t2 on t1.id = t2.id 
where t2.id is null 
+1

@Raihan SOL DIER, belirli bir T1 için T2'den "satırlar" a katılmadığı için (ve bu, bu yaklaşımın lynchpin'i). Eksik satırlar böyle satırlar ... eksik :-) –

+0

Neden downvote? – RedFilter

1

bu deneyin:

SELECT table1.id 
FROM  table1 
WHERE  table1.id NOT IN(SELECT table2.id FROM table2) 
İlgili konular