两个用户之间共同值的MySQL查询

3
这张表格列出了参加活动的事件和用户:
用户         事件 Joe           电影 Joe           购物中心 Jill            购物中心 Joe           喝酒 Jenn          喝酒 Jill            喝酒
如何在这个表格上运行一个查询,以列出两个给定用户之间共同的所有事件。
我的猜测是,这将需要自连接,但我不确定。

你能否提供一个你期望的结果的例子? - Kevin Peno
还有,你是真的只想要比较两个用户,还是你想要找到与“Joe”有共同事件的任何人 - Kevin Peno
4个回答

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'

最终使用,'SELECT joe.event FROM events as joe JOIN events as jill ON jill.user='Jill' AND jill.event=joe.event WHERE joe.user="Joe"' -- 'AND'和'WHERE'都起作用。 - DMin

1
SELECT * 
   FROM myTable t1
      JOIN myTable t2 
         ON t1.event = t2.event
       and t2.User="Jill"
   where
      t1.user = "Joe"

0
select event from table group by event having count(user) =2

这不会给你用户的名称


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接