2011-03-09 60 views
3

下表列出了參加活動的事件和用戶之間共同的價值觀:MySQL查詢列出2個用戶

用戶                 事件
 喬                       電影
 喬                       商城
 吉爾                           商城
 喬                       飲用水
 爵                   飲用水
 吉爾                           飲用水

我怎樣才能運行該表的查詢,列出所有屬於2箇中給出用戶之間共同的事件。

我的猜測是,這將需要自我加入,但我不確定。

+0

你可以發佈一個預期結果的例子嗎? – 2011-03-09 19:59:09

+0

此外,你真的只是尋找2個用戶的比較,或者你正在尋找所有事件'喬'與**任何人**共同** – 2011-03-09 20:00:28

回答

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' 
+0

真棒,謝謝! :) – DMin 2011-03-09 20:29:28

+0

Finnally used'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 2011-03-09 20:33:51

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

,不會給你的用戶的名稱雖然

1
SELECT * 
    FROM myTable t1 
     JOIN myTable t2 
     ON t1.event = t2.event 
     and t2.User="Jill" 
    where 
     t1.user = "Joe" 
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「表的別名