我有一个设计糟糕的表(谢天谢地不是我做的),它以类似于以下方式存储数据:
[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.*