我正在调查地理数据库的一个表中的错误。给定下表,DistrictName和DisId应该始终具有相同的组合(即Bronx=11,Manhatten=14),但有些记录具有不同的DisId(同时仍然共享相同的DistrictName)。
Id DistrictName DisId Section
------------------------------------------------
1 Bronx 11 1
2 Bronx 11 2
3 Brooklyn 12 1
4 Brooklyn 13 2 //wrong
5 Manhatten 14 1
6 Manhatten 14 2
7 Queens 15 1
8 Queens 16 2 //wrong
9 Queens 17 3 //wrong
如何在查询中选择所有错误记录?
总有一个Section 1,所以我要找的是Section>1包含相同DistrictName但DisId不同的记录。
我试过使用一个名为(districtname)的组,但与第1节的记录相比,我遇到了困难。当谈到在have或where子句中加入逻辑时,我有点不知所措。感谢您的帮助!
select * from your_table
where section > 1
and districtname in
(
select districtname
from your_table
group by districtname
having count(distinct disid) > 1
)