0

問題が発生し、それを実行しようとしていますが、機能させることができません。

私は次の表を持っています:

メッセージ

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

ここで、スレッドのリストを取得したいと思います。つまり、メッセージを書いたすべての人のリストです。したがって、問題は、「senderID」列または「recipientID」列のいずれかが自分のuserID(この例では4)であり、重複するエントリを「消去」していることを確認する必要があることです(したがって、たとえば、他のユーザーがID「3」の2つのエントリ)。

JOINとGROUPBYを使って非常に奇妙なことを試しましたが、うまくいきませんでした。

誰か助けてくれませんか?

よろしくお願いします、

SargTeX

4

2 に答える 2

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

最初の句で、distinctを使用するということは、各受信者が1回だけ表示されることを意味します。同じことが2番目の句にも当てはまり、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 に答える