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

无需子查询、CTE或视图实现表的唯一ID筛选

去重实现方案(无嵌套查询/CTE/视图)

针对表中sorhsch_pidm(用户ID)重复的情况,要保留每个ID的任意一行数据,且不使用子查询、CTE或视图,可根据不同数据库特性采用以下方法:

MySQL 场景

方式1:默认模式下直接分组

如果你的MySQL未开启ONLY_FULL_GROUP_BY sql模式,可直接通过GROUP BY分组实现:

SELECT sorhsch_pidm, sorhsch_sbgi_code, sorhsch_surrogate_id
FROM your_table_name
GROUP BY sorhsch_pidm;

方式2:开启严格模式时用ANY_VALUE函数

若开启了ONLY_FULL_GROUP_BY,需用ANY_VALUE()明确指定取分组内任意值:

SELECT sorhsch_pidm,
       ANY_VALUE(sorhsch_sbgi_code) AS sorhsch_sbgi_code,
       ANY_VALUE(sorhsch_surrogate_id) AS sorhsch_surrogate_id
FROM your_table_name
GROUP BY sorhsch_pidm;

Oracle/SQL Server 场景

这两个数据库要求GROUP BY的字段必须覆盖SELECT中的非聚合字段,因此用聚合函数(如MAX/MIN)选取任意行即可:

SELECT sorhsch_pidm,
       MAX(sorhsch_sbgi_code) AS sorhsch_sbgi_code,
       MAX(sorhsch_surrogate_id) AS sorhsch_surrogate_id
FROM your_table_name
GROUP BY sorhsch_pidm;

注:用MIN替换MAX效果一致,只是选取的是分组内最小的对应字段值,均满足“保留任意一行”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:04:59