Ben, bir masa, korkunç (değil benim minnetle yapıyor) tasarlanmış olması aşağıdakine benzer bir şekilde verileri saklar: aitburada tablo. * <> Tablo. * - Böyle bir şey yapmanın bir yolu var mı?
[anahtar], [lease_id], [building_name], ~ 20 daha fazla sütun veri
Bir merkezle birlikte merkezin yanı sıra bir lease_id bulunabilir. Bir kira için bir binadaki verilerin aynı ofis için merkezdeki verilerle eşleşmediği tüm örnekleri bulmam istendi.
Bunu kolayca, kendi kendine birleştirme ile yapabilirim. Buradaki zorluk, karşılaştırmak için yaklaşık 20 sütun bulunması ve her birini el ile yazabilsem de, bunu yapmanın daha iyi bir yolu olup olmadığını merak etmekteydim (ki bu da sorgunun gelecekte kullanılabileceği anlamına geliyordu, herhangi bir tablo değişikliğinin hesaba katılması anlamına geliyordu)). Ben şu işe olsaydı ne yapacağını benzer bir şey yapmak istiyorum Kodunuzu syntaxtically saçma zikretmekte içine düştüğü sahte olarak
:
select lp.*
from lease_proposal lp
inner join
(
select *
from lease_proposal lp2
where building_id = '001' -- assume 001 is head office for sake of example
) lp2
on lp2.lease_id = lp.lease_id
where lp.* <> lp2.*
Bu bakınız SQL Server kullanılamaz: http://stackoverflow.com/questions/4826613/natural-join-in-sql-server Bu bir çentik bilgimi itti – Codingo
- gerçekten büyük mesaj, Teşekkür ederim – Codingo
"SELECT * FROM lease_proposal INTERSECT" sorgusundan çıkarken aynı sonuçları verir. 'INTERSECT', eğer varsa, 'building_id =' 001 '' çift satırlarını bastırır. Daha sonra, başka bir ölçütle eşleşmeyen satırları bulmak için sonuçta oluşan alt kümeyi kullanırsınız ve alt kümenin yinelenen içerip içermediğini belirtmezsiniz, çünkü alt kümede * olmayan * sıralar istemiş olursunuz. –