Mysql 加入,包括计数
我有两张桌子: 事件和事件行动Mysql 加入,包括计数,mysql,sql,Mysql,Sql,我有两张桌子: 事件和事件行动 events columns: event_id user_id event_name events_actions columns: action_id user_id event_name 它们在两个表中都有一个公共字段,即event_name 我想为一个用户显示所有事件,但是,仅当它们有一些与之链接的事件\u操作时(通过事件\u名称链接) 我可以通过按用户id拉取所有事件来实现这一点,然后在显示之前确保同名事件动作>0,但有没有一种方法可
events columns:
event_id
user_id
event_name
events_actions columns:
action_id
user_id
event_name
它们在两个表中都有一个公共字段,即event_name
我想为一个用户显示所有事件,但是,仅当它们有一些与之链接的事件\u操作时(通过事件\u名称链接)
我可以通过按用户id拉取所有事件来实现这一点,然后在显示之前确保同名事件动作>0,但有没有一种方法可以在一个SQL查询中实现这一点
我正在使用MySQL
select *
from events ev
where exists (select 1 from event_actions ea where ev.event_name = ea.event_name)
或
首先,表
events\u actions
上应该有event\u id
,而不是event\u name
。那么,假设event\u name
是唯一的,您可以执行以下查询:
SELECT E.user_id, E.event_name
FROM dbo.events E
INNER JOIN (SELECT DISTINCT event_name, user_id FROM dbo.events_actions) EA
ON E.user_id = EA.user_id AND E.event_name = EA.event_name
SELECT E.user_id, E.event_name
FROM dbo.events E
INNER JOIN (SELECT DISTINCT event_name, user_id FROM dbo.events_actions) EA
ON E.user_id = EA.user_id AND E.event_name = EA.event_name