如何选择故障记录



我正在调查地理数据库的一个表中的错误。给定下表,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
)

最新更新