我想建立一個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