2017-01-16 47 views
0

我的查詢語句: -如何查詢以獲得獨特的結果?

SELECT DISTINCT _to, _from FROM message; 

,它給了輸出: -

_to _from time 

sam  jeet 16/01/17 00:18:27.7780 
jeet  sam 16/01/17 00:18:26.7780 
bro  sis 16/01/17 00:18:20.7780 
sis  bro 16/01/17 00:18:23.7780 
abc  def 16/01/17 00:18:21.7780 

它給出正確的結果,但它沒有給我想要的東西。 我需要輸出如下:

sam jeet 16/01/17 00:18:27.7780 
sis bro 16/01/17 00:18:23.7780 
abc def 16/01/17 00:18:21.7780 

也就是說截拳道,SAM應該是相同的SAM,截拳道,所以它不應該與SIS,兄弟是repeated.Similiarly。 進出兩個選擇的人都應該有最新的時間

+0

哪你使用的是dbms嗎? – Aleksej

+2

添加其中'_to <= _from' –

+0

請僅標記您正在使用的DBMS – JohnHC

回答

4

試試這個:

SELECT CASE 
      WHEN _to < _from THEN _from 
      ELSE _to 
     END, 
     CASE 
      WHEN _to >= _from THEN _from 
      ELSE _to 
     END 
FROM message 
GROUP BY CASE 
      WHEN _to < _from THEN _from 
      ELSE _to 
     END, 
     CASE 
      WHEN _to >= _from THEN _from 
      ELSE _to 
     END 

Demo here

如果你正在使用MySQL查詢可以簡化爲:

SELECT LEAST(_to, _from), 
     GREATEST(_to, _from) 
FROM message 
GROUP BY LEAST(_to, _from), 
     GREATEST(_to, _from) 
+0

「最少」和「最大'也可用? –

+0

如果數據是字符串而不是數字,該怎麼辦?這裏僅供參考我已採取數字 –

+0

@ChandanBera這是一樣的。您也可以在SQL中使用帶有字符串的比較運算符。 –

相關問題