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

SQLite查询:按规则获取目标行或全局最旧行

SQLite 查询实现需求逻辑

首先,我们可以通过CTE(公共表表达式)分步实现你的需求逻辑,具体如下:

核心逻辑拆解

  • 定位第一个满足score>600且flag=0的行(id最小的符合条件行)作为候选行
  • 统计候选行之前不符合条件的行数(id小于候选行id,且不满足score>600或flag≠0的行)
  • 根据统计结果返回目标行:若不符合条件行数<5,返回候选行;否则返回全局id最小的行

最终查询语句

WITH candidate AS (
    SELECT * FROM test 
    WHERE score > 600 AND flag = 0 
    ORDER BY id ASC LIMIT 1
),
invalid_count AS (
    SELECT COUNT(*) AS cnt 
    FROM test 
    WHERE id < (SELECT id FROM candidate)
      AND (score <= 600 OR flag != 0)
)
SELECT * FROM test 
WHERE id = CASE 
    WHEN (SELECT cnt FROM invalid_count) < 5 THEN (SELECT id FROM candidate)
    ELSE (SELECT MIN(id) FROM test)
END;

语句说明

  1. candidate 子查询:获取你最初想要的第一个符合条件的行
  2. invalid_count 子查询:统计候选行之前所有不符合条件的记录数量
  3. 主查询通过CASE判断分支:如果不符合条件的行数不足5,返回候选行;否则直接返回全局id最小的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:25:23