我有一个简单的聊天表:
id, sender_id, sender_name, recipient_id, recipient_name, content
尝试对Person A
(我)和(其他人)或(其他人)和Person A
有人会怎么做?
目标是获取人员A所在的所有聊天记录的列表,并仅列出其他人。
即。如果A人与B人,C人和D人聊天,我想要显示人B,C人和D人的名单。然后在下一个视图中,我将显示与A人和其他人的聊天。
答案 0 :(得分:0)
select * from chat where
recipient_id in (persona, personb )
and sender_id in ( persona, personb )
编辑:
从技术上讲,你不是在SQL意义上“分组”,你可能正在订购结果。
类似的东西:
select id, content, sender_id as other_person
from chat
where recipient_id = persona
union
select id, content, recipient_id
from chat
where sender_id = persona
order by other_person
另外,请考虑现在正常化而不是以后。你的'不查询两次'的想法是不正确的。最好不要重复这些名字。
答案 1 :(得分:-1)
试试这个
SELECT * FROM chatTable
WHERE sender_name IN('personA','personB') AND
recipient_name IN('personA','personB');