您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

连接查询,只有在`in`子句中具有所有值的列

连接查询,只有在`in`子句中具有所有值的列

您可以通过将ID汇总到一个数组中,然后将其与预期ID列表进行比较来做到这一点:

select v.*
from venues v
  join amenity_venue av ON av.venue_id = v.id
group by v.id
having array_agg(av.amenity_id) @> array['aaa', 'bbb'];

上面的示例假定已将venue.id其声明为主键(因为group by)。

如果您只想传递便利设施名称,则实际上并不需要对查询中的ID进行硬编码:

select v.*
from venues v
  join amenity_venue av ON av.venue_id = v.id
group by v.id
having array_agg(av.amenity_id) @> array(select id 
                                         from amenities 
                                         where name in ('first amenity', 'second amenity'));

在线示例:https//rextester.com/FNNVXO34389

其他 2022/1/1 18:42:36 有469人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶