我有一个要求,我需要在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 :(得分: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
时使用MIN
和Select Min(Amount)
From
(
Select Amount
From YourTable
Group By Amount
Having Count(*) = 1
) As A
轻松完成此操作:
std::async
答案 2 :(得分:0)
我会使用GROUP BY
和LIMIT
执行此操作:
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;
这种方法的优点是您也可以从列中获取所有其他值。