此表列出了参加活动的活动和用户:
用户事件
乔电影
乔商城
吉尔商城
乔饮酒
爵饮酒
吉尔饮酒
如何在此表上运行查询以列出2个给定用户之间通用的所有事件。
我的猜测是,这需要自我加入,但我不确定。
答案 0 :(得分:5)
SELECT *
FROM myTable joe
JOIN myTable jill ON jill.User='Jill' AND jill.Event=joe.Event
WHERE joe.User='Joe'
这也可能有用。它有时可以更有效地这样做(将所有条件都放在JOIN中)
SELECT *
FROM myTable joe
JOIN myTable jill ON jill.User='Jill'
AND jill.Event=joe.Event
AND joe.User='Joe'
答案 1 :(得分:1)
SELECT *
FROM myTable t1
JOIN myTable t2
ON t1.event = t2.event
and t2.User="Jill"
where
t1.user = "Joe"
答案 2 :(得分:0)
select event from table group by event having count(user) =2
虽然不会提供用户的姓名
答案 3 :(得分:0)
select eventname from user_event JOIN user_event as t2 USING (eventname)
where user_event.username="joe" and t2.username="jill"
这里,'user_event'是表的名称,'t2'是'user_event'表的别名