2017-06-29 41 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; 

这种方法的好处是,你可以从该列中的所有其它值。