1

テーブルメッセージがあります

| id | user_id | recepient_id | message
| 1  |    1    |      2       | test1
| 2  |    1    |      2       | test2
| 3  |    2    |      1       | test3
| 4  |    3    |      1       | test4
| 5  |    3    |      2       | test5

私はID1のユーザーであり、user_idまたはrecepient_idである行を選択したいと考えています(ただし、user_id / recepient_idのペアごとに1行のみ)。この例では、IDが2、4(または1、4、2、3、2、4)のメッセージを選択します。user_id/ receive_idのuniqペアを取得するだけです)

どうすればいいですか?

4

1 に答える 1

1
select distinct on (least(user_id, recipient_id), greatest(user_id, recipient_id))
    id, user_id, recipient_id, message
from the_table
where user_id = 1 or recipient_id = 1
于 2012-06-21T22:39:15.057 に答える