我需要编写一个查询,仅当一组具有特定属性的记录中没有记录时,才从表中选择记录。
在上下文中,表是offers(如房地产)。可以有多个具有相同id的报价。id定义了分组。另一个字段是status,可以是'pending'、'countered'、'accepted'、'rejected'、'expired'、'draft'。另一个字段是用户的id。假设一个买家出价了。将在数据库中创建一个新的报价,状态为“待定”且买家id为。然后卖方可能决定还盘。这将插入另一个具有相同offer id但状态为“countered”和卖家用户id的记录。这将一直持续到报价被“接受”或“拒绝”或“过期”。
我想编写一个查询,选择所有未被拒绝、未过期和未草稿的报价。
我能想到的最好的办法是:
select distinct offer_id
from offers
where
listing_id = ${listingId}
and offer_id not in (
select offer_id
from offers
where status = 'Rejected' or status = 'Expired' or status = 'Draft'
)
这是可行的,但是嵌套的select使它非常低效。我想使用联接来排除拒绝、过期和草稿的状态。有可能吗?
谢谢
1条答案
按热度按时间omqzjyyz1#
如果我没记错的话,你可以
offer_id
并使用having
筛选出任何报价的条款status
被拒绝、过期或草稿: