Konu: karşılaştırmada eşit olmayanı döndüren sorgu ?
a tablosu b tablosu
---------- ------------
ahmet ali
mehmet mehmet
ali
ayşe
ahmet
ayşe
kayıtlarını döndüren sorguyu nasıl yapabilirim?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Veritabanı, Tablo, View, Index ve SQL Syntax » karşılaştırmada eşit olmayanı döndüren sorgu ?
a tablosu b tablosu
---------- ------------
ahmet ali
mehmet mehmet
ali
ayşe
ahmet
ayşe
kayıtlarını döndüren sorguyu nasıl yapabilirim?
Asil istediginin bu kadar basit oldugunu sanmiyorum onun icin birden fazla yontem:
1) Bu senin istedigin ilk bakista
SELECT isim FROM aTablosu WHERE isim NOT in (SELECT isim FROM bTablosu) ;
union ;
SELECT isim FROM bTablosu WHERE isim NOT in (SELECT isim FROM aTablosu)
2) Nereden geldiklerini gosteren sekli:
SELECT isim, 1 as inTable ;
FROM aTablosu WHERE isim NOT in (SELECT isim FROM bTablosu) ;
union ;
SELECT isim, 2 as inTable ;
FROM bTablosu WHERE isim NOT in (SELECT isim FROM aTablosu)
3) Biraz degisik bir versiyon:
SELECT t1.isim as t1isim, t2.isim as t2isim ;
FROM aTablosu t1 ;
full JOIN bTablosu t2 ON t1.isim == t2.isim ;
WHERE t1.isim is null OR t2.isim is null
4) Aslinda isin icinde baska fieldlerin oldugunu ve primary key sabit iken diger fieldlerdeki degisikliklere gore 1'den fazla yazilmis kayitlari bulma:
SELECT * FROM t1 UNION SELECT * FROM t2 INTO CURSOR tmp
SELECT * FROM ;
tmp ;
WHERE pkid in ;
( SELECT pkid FROM tmp HAVING CNT(*) > 1 GROUP BY pkid )
fox4um » Veritabanı, Tablo, View, Index ve SQL Syntax » karşılaştırmada eşit olmayanı döndüren sorgu ?