我遇到了问题而我正在尝试,但我无法让它发挥作用。
我有下表:
讯息
|-------------|----------------|
| 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
答案 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