mySQL - 按任意顺序选择2列的不同组合

时间:2015-11-19 01:43:49

标签: mysql distinct

我有一个表,其中包含两个用户之间的消息。我需要找到所有不同的用户组合,无论他们是发送者还是接收者。

ID    sender     receiver   message
1     'bob'      'bill'     'message 1'
2     'bill'     'bob'      'message 2'
3     'mike'     'bob'      'message 1'
4     'bob'      'bill'     'message 3'
5     'bob'      'mike'     'message 2'

我需要查询才能返回此内容:

ID    sender     receiver   message
1     'bob'      'bill'     'message 1'
3     'mike'     'bob'      'message 1'

注意如何跳过ID = 2,因为已找到Bob和Bill的组合(与ID = 4相同)并且跳过ID = 5,因为已找到Bob和Mike的组合。

2 个答案:

答案 0 :(得分:2)

在子查询中提取所需的消息ID,然后根据消息加入它:

Error in dim(ordered) <- ns : dims [product 900] do not match the length of object [9900]

答案 1 :(得分:0)

只需在聚合中使用least()greatest()

select min(id) as id,
       least(sender, receiver) as p1, greatest(sender, receiver) as p2,
       min(message) as message
from messages
group by least(sender, receiver), greatest(sender, receiver);