如何从 SQLite 中的 table 中获取最小的唯一整数

How to get the smallest unique integer from a table in SQLite

我有一个 table,它有两列,名称和编号。我想从提供的 table 中获取 最小的 唯一 号码。例如

name number
john 1
abbey 3
afton 2
mike 1
lucas 5
jack 2
jake 4
tony 3

例如,这里的最小值是 1 但最小的 unique 值是 4 我如何在 SQLite 中进行查询才能做到这一点? 我确实看到了 但这不是我想要的

编辑:这是我试过的代码

Select a.name, a.number
From Result a
Having count(a.smallest) = 1
Group By a.smallest;

它返回了“错误:XX 行附近:“组”附近:语法错误” 我也试过了

Select a.name, a.number
From Result a
Where count(a.smallest) = 1
Group By a.smallest;

但它返回“错误:靠近 XX 行:滥用聚合:count()”

您可以尝试按数字汇总您的 table,限制数字只出现一次,然后保留最小的数字:

SELECT number
FROM yourTable
GROUP BY number
HAVING COUNT(*) = 1
ORDER BY number
LIMIT 1;

可以按号码分组,在HAVING子句中设置号码唯一的条件
然后用MIN()window函数取最小的数:

SELECT DISTINCT MIN(number) OVER () AS min_number
FROM tablename
GROUP BY number
HAVING COUNT(*) = 1;

参见demo

使用ROW_NUMBER:

SELECT *
FROM (SELECT a.*, COUNT(*) OVER(PARTITION BY number) AS cnt
      FROM Result a) sub
WHERE cnt = 1
ORDER BY number
LIMIT 1;

输出:

name    number  cnt
jake    4   1

db<>fiddle demo