从一个表中获取所有行,并添加布尔值,指示是否存在到另一个表中的单行的链接



我有三个表:USERS、ITEMS和USER_ITEMS。USERS和ITEMS都是独立的,有主键USER_ID和ITEM_ID, USER_ITEMS是一个链接表,只使用USER_ID和ITEM_ID作为外键。

我想查询并获得每一行/列在ITEMS,同时还添加一个临时布尔列的响应,指示是否给定的ITEMS行有一个链接在USER_ITEMS到指定的USER_ID。例如,获取所有物品信息,并指出给定用户是否拥有物品。

是否有一个有效的方法来做这个单一的查询?

select
i.*,
case
when exists(
select 1 from user_items ui 
where ui.item_id = i.item_id and ui.user_id = ?
)
then 1
else 0
end as user_has_item
from
items i

最新更新