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

SQLite查询如何对col1去重且优先保留col2为yes的行

SQLite 去重优先保留指定行解决方案

方案1:GROUP BY 极简写法(推荐)

利用 SQLite 字符串排序规则,"yes" 的字典序大于 "no",对 col1 分组后取 col2 的最大值即可优先拿到 yes 记录,完全匹配你的需求:

SELECT col1, MAX(col2) AS col2 FROM TABLE1 GROUP BY col1;

特点:写法简洁,查询性能高,无需依赖高版本 SQLite 特性。


方案2:窗口函数通用写法

如果后续优先级规则有调整(比如新增其他枚举值的优先级),可以用 ROW_NUMBER 窗口函数实现,要求 SQLite 版本 >= 3.25:

WITH ranked_data AS (
    SELECT 
        col1,
        col2,
        -- 按col1分组,自定义优先级排序,序号1为每组要保留的行
        ROW_NUMBER() OVER (
            PARTITION BY col1 
            ORDER BY CASE WHEN col2 = 'yes' THEN 1 ELSE 2 END ASC
        ) AS row_num
    FROM TABLE1
)
SELECT col1, col2 FROM ranked_data WHERE row_num = 1;

特点:扩展性强,可适配任意自定义优先级规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:54:03