如何构建一个查询,以便我可以找到所有事件以及一个额外的 bool 列 "attending",它是与会者 table 的连接?
How to build a query so that I can find all events along with an extra bool column "attending" which is a join on attendees table?
我有一个 events
table,我有一个 events_attendees
table,其中有 event_id
和 user_id
。
例如,我想查找一些用户 (user_id = 1) 周围的活动,但也想知道他们是否通过该附加列参加。
这是一个查询,可以让我获得用户正在参加的 PIN 码,但我再次想知道如何将其作为 PIN 查找的一部分。
select * from events
join events_attendees EA on events.id = EA.pin_id and EA.user_id = 656
我如何才能获取所有事件以及一个附加列 attending
,即用户是否参加此事件?
您可以使用 exists
:
select e.*,
exists(
select 1
from events_attendees ea
where ea.pin_id = e.id and ea.user_id = 656
) attending
from events e
另一种选择是 left join
:
select e.*, (ea.pin_id is not null) attending
from events e
left join events_attendees ea on ea.pin_id = e.id and ea.user_id = 656
我有一个 events
table,我有一个 events_attendees
table,其中有 event_id
和 user_id
。
例如,我想查找一些用户 (user_id = 1) 周围的活动,但也想知道他们是否通过该附加列参加。
这是一个查询,可以让我获得用户正在参加的 PIN 码,但我再次想知道如何将其作为 PIN 查找的一部分。
select * from events
join events_attendees EA on events.id = EA.pin_id and EA.user_id = 656
我如何才能获取所有事件以及一个附加列 attending
,即用户是否参加此事件?
您可以使用 exists
:
select e.*,
exists(
select 1
from events_attendees ea
where ea.pin_id = e.id and ea.user_id = 656
) attending
from events e
另一种选择是 left join
:
select e.*, (ea.pin_id is not null) attending
from events e
left join events_attendees ea on ea.pin_id = e.id and ea.user_id = 656