我们如何从
等数据中获取唯一记录| 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 or 11
,
问题是用户可以是sender
或to
,我尝试使用像
select * from pm where letter_id=20 and sender=13 or to=13
其中sender
和to
来自我的申请会话。
有没有办法避免结果?或者我必须改变我的表格结构?
答案 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)