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

如何用GROUP BY过滤title大小写重复行并保留全列数据

处理title大小写重复并保留任意一行全列数据

要解决title大小写差异导致的重复数据问题,同时保留所有列的数据,推荐用窗口函数(适合主流数据库新版本)或子查询关联(兼容旧版本数据库)的方案,以下是具体实现:

方案1:窗口函数(MySQL 8.0+/PostgreSQL/SQL Server等支持窗口函数的数据库)

利用ROW_NUMBER()给每个小写title相同的分组分配行号,取每组第一行即可:

SELECT key_id, account_id, title, bpic, description, legal, address
FROM (
    SELECT 
        *,
        -- 按小写title分组,每组内按key_id排序(可换成其他字段控制保留哪一行)
        ROW_NUMBER() OVER (PARTITION BY LOWER(title) ORDER BY key_id) AS row_num
    FROM your_table_name
) grouped_data
WHERE row_num = 1;
  • 说明:PARTITION BY LOWER(title)将大小写不同但内容一致的title归为同一组;ORDER BY key_id指定每组内取key_id最小的行,若想随机保留任意一行,可换成ORDER BY RAND()(注意大数据量下性能会受影响)。

方案2:子查询关联(兼容MySQL 5.x等无窗口函数的数据库)

先分组获取每组小写title对应的唯一key_id,再关联原表拿到全列数据:

SELECT t1.*
FROM your_table_name t1
INNER JOIN (
    -- 按小写title分组,取每组最小的key_id(也可用MAX(key_id))
    SELECT MIN(key_id) AS target_key_id
    FROM your_table_name
    GROUP BY LOWER(title)
) t2 ON t1.key_id = t2.target_key_id;
  • 说明:此方法通过MIN(key_id)锁定每组要保留的行,确保最终结果无重复,且能拿到所有列的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:15:39