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)”)代码>