Sql 如何获得唯一记录

Sql 如何获得唯一记录,sql,postgresql,Sql,Postgresql,我们如何从以下数据中获得唯一记录: | letter_id | sender | to | |-----------|--------|----| | 20 | 13 | 12 | | 20 | 13 | 11 | | 20 | 13 | 10 | | 20 | 11 | 13 | 我需要找到letter_id=20和sender=13或to=11 或者sender=11和to=13,这意味着如果用户具有i

我们如何从以下数据中获得唯一记录:

| letter_id | sender | to |
|-----------|--------|----|
| 20        | 13     | 12 |
| 20        | 13     | 11 |
| 20        | 13     | 10 |
| 20        | 11     | 13 |
我需要找到
letter_id=20
sender=13
to=11
或者
sender=11
to=13
,这意味着如果用户具有
id=13或11
, 问题是用户可以是
发送者
收件人
,我已经尝试使用类似的查询


选择*from pm,其中字母id=20,发件人=13,或to=13,其中
发件人
收件人
来自我的应用程序会话

有没有办法避免这种结果?或者我必须更改我的表结构?

这是您想要的吗

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
是保留字。您需要转义名称,或者最好更改表中列的名称。

解决问题的方法是:

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

从pm中选择*其中字母id=20和((发件人=13和收件人=11)或(发件人=11和收件人=13))
?…您的问题有点不清楚
字母id=20
。问题是我无法获得两个参数,在我的应用程序中我有两个参数,第一个是
字母id
和第二个id
用户会话
,可以是
发送者
收件人
@LaurenzAlbe。谢谢。你的评论,
1st是letter\u id和2nd id用户会话
,与你问题的这一部分相矛盾,
发送者和来自我的应用程序会话。
。我的意思是我的应用程序有两个参数letter id和用户会话,用户会话可以是
发送者
,我稍后再试,并附带结果Hanks buddy,解决了这个问题,
Letters::where('Letters_id',20)->whereRaw($this->users in(sender,to)”)