MySQL查询列出2个用户之间的公共值

时间:2011-03-09 19:56:39

标签: mysql

此表列出了参加活动的活动和用户:

用户事件
乔电影
乔商城
吉尔商城
乔饮酒
爵饮酒
吉尔饮酒

如何在此表上运行查询以列出2个给定用户之间通用的所有事件。

我的猜测是,这需要自我加入,但我不确定。

4 个答案:

答案 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'表的别名