0

我有一个问题,我正在尝试,但我无法让它工作。

我有下表:

消息

|-------------|----------------|
| 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 尝试了一些非常奇怪的事情,但没有让它起作用。

有人可以帮助我吗?

最好的问候,

萨格特克斯

4

2 回答 2

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

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

于 2012-11-08T12:12:07.250 回答
0

谢谢!

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

SELECT IF (senderID = 4, recipientID, senderID) AS userID
FROM `messages`
WHERE senderID = 4 OR recipientID = 4
GROUP BY userID
于 2012-11-08T12:32:52.497 回答