根据postgres中不同的2个字段选择行

时间:2012-06-21 22:26:31

标签: postgresql select distinct

我有桌面消息

| 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

我是id为1的用户,想要选择我所在的行是user_id或recepient_id(但每个user_id / recepient_id对只有1行)。在这个例子中,我想选择带有id的消息 - 2,4(或1,4或2,3或2,4,无关紧要。只需为user_id / recepient_id获取uniq对)

我该怎么做?

1 个答案:

答案 0 :(得分: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