2017-06-29 43 views
1

我有一個需求,我需要在sql列中找到最低和非重複值。讓我形容它不重複和最小值

Sno. User amount 
1. 1001 $0.02 
2. 1002 $0.03 
3. 1003 $0.04 
5. 1004 $0.02 
6. 1005 $0.05 

在這種情況下,在金額欄雖然$ 0.02的最低,但我們可以看到,它也預設兩次(重複)在列,所以接下來的最小值和非重複值是0.03美元,這是我想要的。 我嘗試使用Distinct,但它提供了數量列中的所有值,我只需要一個。我不在乎這裏價值更高的$ 0.04和$ 0.05。

+0

向我們展示您的嘗試。 – nicomp

回答

0

您可以使用MIN()GROUP BY.. HAVING

SELECT MIN(amount) 
FROM (SELECT amount 
     FROM table 
     GROUP BY amount 
     HAVING COUNT(1) = 1) a 
+0

它會給所有的行計數= 1,我只需要1行,即在這種情況下0.03美元 –

+0

@Kaustubhpande好點,我修好了 –

+0

是的,這個工程。謝謝 –

0

您可以用GROUP BYHAVING輕鬆地做到這一點的同時服用MIN

Select Min(Amount) 
From 
(
    Select Amount 
    From  YourTable 
    Group By Amount 
    Having Count(*) = 1 
) As A 
0

我會GROUP BYLIMIT做到這一點:

SELECT amount 
FROM t 
GROUP BY amount 
HAVING COUNT(*) = 1 
ORDER BY amount ASC 
LIMIT 1; 

或者,如果你真的想成爲幻想,沒有聚集:

select t.* 
from t 
where not exists (select 1 from t t2 where t2.sno = t.sno and t2.amount = t.amount) 
order by t.amount 
limit 1; 

這種方法的好處是,你可以從該列中的所有其它值。