MySQL - JOIN和GROUP BY

时间:2012-11-08 12:06:55

标签: 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),而且我“擦除”重复的条目(所以我没有例如,其他用户的ID为“3”的2个条目。

我在JOIN和GROUP BY上尝试了一些非常奇怪的事情,但没有让它发挥作用。

是的,有人可以帮助我吗?

最好的问候,

SargTeX

2 个答案:

答案 0 :(得分:0)

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

在第一个条款中,使用 distinct 表示每个收件人只出现一次;第二个子句也是如此,使用 union 意味着只会出现与两个子句不同的值。

答案 1 :(得分:0)

谢谢!

这个有用,但你的看起来更漂亮:

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