非重复和最小值

时间:2017-06-29 15:26:57

标签: mysql sql

我有一个要求,我需要在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美元的高价值。

3 个答案:

答案 0 :(得分:0)

您可以将MIN()GROUP BY.. HAVING

一起使用
SELECT MIN(amount)
FROM (SELECT amount
      FROM table
      GROUP BY amount
      HAVING COUNT(1) = 1) a

答案 1 :(得分:0)

您可以在GROUP BY HAVING时使用MINSelect Min(Amount) From ( Select Amount From YourTable Group By Amount Having Count(*) = 1 ) As A 轻松完成此操作:

std::async

答案 2 :(得分: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;

这种方法的优点是您也可以从列中获取所有其他值。