2012-11-08 168 views
0

我有一个问题,我正在努力,但我不能得到它的工作。MySQL - JOIN和GROUP BY

我有如下表:

消息

|-------------|----------------| 
| senderID | recipientID | 
|-------------|----------------| 
| 4   | 3    | 
| 3   | 4    | 
| 3   | 423   | 
| 18   | 4    | 
| 391   | 4    | 
| 4   | 19    | 
| 3   | 4    | 
| 48   | 213   | 
| and so  | on ...   | 
|-------------|----------------| 

现在,我想要得到的线程的列表,这意味着:我写了消息的所有人员名单。所以问题是,我必须看看,无论是在“senderID”或“recipientID”列是我的用户ID(在这个例子中,这是4),我“擦除”重复条目(所以我没有2个条目与其他用户具有例如“3”的ID)。

我试过一些JOIN和GROUP BY很奇怪的东西,但没有得到它的工作。

愿有人帮我吗?

最佳问候,

SargTeX

回答

0
select distinct recipientid 
from messages 
where senderid = 4 
union 
select distinct senderid 
from messages 
where recipientid = 4 

在第一条款,使用不同意味着每个接收者将只出现一次;第二个条款也是如此,并且使用联合意味着只会出现与两个子句不同的值。

0

谢谢!

这一个工作,但你看起来更漂亮:

SELECT IF (senderID = 4, recipientID, senderID) AS userID 
FROM `messages` 
WHERE senderID = 4 OR recipientID = 4 
GROUP BY userID