如何获得独特的记录

时间:2017-05-23 11:04:35

标签: sql postgresql

我们如何从

等数据中获取唯一记录
| letter_id | sender | to |
|-----------|--------|----|
| 20        | 13     | 12 |
| 20        | 13     | 11 |
| 20        | 13     | 10 |
| 20        | 11     | 13 |

我需要找到letter_id=20sender=13to=11的记录 或sender=11to=13表示用户是否有id=13 or 11, 问题是用户可以是senderto,我尝试使用像

这样的查询

select * from pm where letter_id=20 and sender=13 or to=13其中senderto来自我的申请会话。

有没有办法避免结果?或者我必须改变我的表格结构?

2 个答案:

答案 0 :(得分:0)

这是你想要的吗?

select pm.*
from pm
where letter_id = 20 and
      (11, 13) in ( (sender, to), (to, sender) );

或者,这可以表示为:

where letter_id = 20 and
      ( (sender = 11 and to = 13) or
        (sender = 13 and to = 11)
      )

注意:to是保留字。您需要转义名称或更好地更改表中列的名称。

答案 1 :(得分:0)

您的问题的解决方案是:

select * from pm
    where letter_id = @letter_Id and
          @user_session in (Sender,to)