You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中如何筛选具有指定间隔的唯一整数?

解决方案

要筛选出符合「value唯一,且没有其他行的value和它相差小于3」的行,可以用下面的SQL实现:

实现逻辑

分两步判断:

  • 先确认当前行的value在表里只出现过一次;
  • 再确认没有任何其他行的value和它的绝对值差小于3。

SQL 查询语句

假设你的表名为your_table,执行以下查询:

SELECT t.id, t.name, t.value
FROM your_table t
WHERE
  -- 确保当前value是唯一的
  (SELECT COUNT(*) FROM your_table WHERE value = t.value) = 1
  AND
  -- 确保没有其他value和当前value的差小于3
  NOT EXISTS (
    SELECT 1
    FROM your_table o
    WHERE o.value != t.value
      AND ABS(o.value - t.value) < 3
  )

对应示例验证

针对你给出的value列表:14, 15, 15, 17, 20, 23, 23, 23, 24, 29, 33, 32, 32, 33, 38, 38, 43:

  • 20只出现1次,和它最近的17、23都差3,不满足“小于3”的条件,符合要求;
  • 29只出现1次,最近的32差3,同样符合;
  • 43只出现1次,最近的38差5,符合要求;
    最终返回这三个值对应的行,和你的期望一致。

注意事项

如果你的需求里“相差在3以内”包含等于3的情况(也就是绝对值≤3),把SQL里的< 3改成<= 3就行,但这样你的示例里20会因为存在17(差3)被排除,和你给出的结果不符,所以这里按你的示例逻辑用< 3判断。

内容的提问来源于stack exchange,提问作者Jordan Kizer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:40:18