私は、次のような方法でデータを格納する、ひどく設計されたテーブルを持っています(ありがたいことに私はしていません)。
[key]、[lease_id]、[building_name]、さらに20列のデータ
Lease_idは、本社だけでなくセンターにも存在する可能性があります。ある建物のリースのデータが、同じリースの本社のデータと一致しないすべてのインスタンスを見つけるように依頼されました。
セルフジョインを使用すると、これを非常に簡単に行うことができます。ここでの課題は、比較する列が約20あることです。各列を手動で入力することはできますが、これを行うためのより良い方法があるかどうか疑問に思いました(これは、テーブルの変更を考慮して、クエリを将来使用できることも意味します)。 )。
構文的にばかげた疑似コードで-私はそれが機能する場合に以下が行うことと同様のことをしたいと思います:
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.*