我想建立一个SQL查询,其中根据特定条件选择唯一的行,但是我在如何构建它时遇到困难。用于选择值的唯一组合的SQL查询,忽略两列次序
行有一个varchar
对话ID,varchar
发件人和varchar
收件人。
我需要的结果是对话ID和发件人和收件人的所有不同组合,但收件人列中的发件人重复或反之亦然被视为相同。
例如:
ID ,Sender ,Recip
-------------------------
Convo1 ,PersonA ,PersonB
Convo1 ,PersonB ,PersonA
Convo1 ,PersonC ,PersonA
Convo1 ,PersonC ,PersonA
Convo1 ,PersonA ,PersonC
Convo1 ,PersonC ,PersonA
Convo2 ,PersonB ,PersonD
Convo2 ,PersonB ,PersonA
,将返回的查询:
select id, (case when sender < recip then sender else recip end) as person1,
(case when sender < recip then recip else sender end) as person2
from conversations
group by id,
(case when sender < recip then sender else recip end),
(case when sender < recip then recip else sender end);
许多数据库支持:
Convo1, PersonA, PersonB
Convo1, PersonC, PersonA
Convo2, PersonB, PersonD
Convo2, PersonB, PersonA
我不得不添加明显得到独特的组合,但除此之外,这个工作太棒了! – user1958698 2014-10-20 19:06:57
@ user1958698。 。 。 “分组”并没有产生独特的结果? – 2014-10-20 21:38:12