我试图弄清楚如何编写查询以选择仅具有一定条件的一组记录。这是一个例子。我有一张桌子,上面有船和船东的清单。当一条船被出售给新的所有者时,将插入一条新记录,并且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/