我试图弄清楚如何编写查询以选择仅具有一定条件的一组记录。这是一个例子。我有一张桌子,上面有船和船东的清单。当一条船被出售给新的所有者时,将插入一条新记录,并且CURRENTOWNER标志更改为Y:

OWNERID   BOATID    CURRENTOWNER
------   --------   ------------
OWN1       NUM1          Y
OWN2       NUM1          N
OWN3       NUM1          N
OWN4       NUM2          N
OWN5       NUM2          N
OWN6       NUM2          N
OWN7       NUM3          Y


我正在尝试编写查询,以仅显示具有多个所有者(例如NUM1或NUM2)并且还没有当前所有者的BOATID,这意味着对于该特定BOATID,没有CURRENTOWNER ='Y'的记录。根据上面的数据,查询应返回NUM2,因为它没有当前所有者。

我知道我可以使用以下方法获得拥有多个所有者的船的列表:

select boatid from boattable group by boatid having count(*) >1


之后,我不确定如何只获取没有当前所有者的记录。

最佳答案

应该这样做:

select
  BOATID
from
  boattable b
where
  not exists (
    select 1 from boattable b2
    where b2.BOATID = b.BOATID and b2.CURRENTOWNER = 'Y')
group by
  BOATID
having
  count(*) > 1

关于sql - SQL-选择仅满足特定条件的记录组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28705070/

10-13 22:30