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

SQL实现:多行列值重复时仅返回对应单条数据

实现每个SITE仅返回一条记录的SQL修改方案

原查询会返回包含重复SITE的所有记录,要实现每个SITE仅保留一条记录(示例中取每组的第一条),可根据使用的数据库类型选择以下方案:

通用窗口函数方案(适用于PostgreSQL、SQL Server、MySQL 8.0+等支持窗口函数的数据库)

使用ROW_NUMBER()窗口函数按SITE分组,筛选出每组的第一条记录:

SELECT userid, locationid, site
FROM (
    SELECT 
        userid, 
        locationid, 
        site,
        -- 按SITE分组,每组内按userid排序并编号
        ROW_NUMBER() OVER (PARTITION BY site ORDER BY userid) AS rn
    FROM mytable
) t
WHERE rn = 1
ORDER BY site;

如果不需要指定每组内的排序规则,可去掉ORDER BY userid,数据库会按默认顺序取每组的第一条记录。

MySQL 兼容方案(适用于低版本MySQL)

若你的MySQL版本不支持窗口函数,可使用GROUP BY结合聚合函数实现:

-- 取每组SITE中userid最小的那条记录
SELECT MIN(userid) AS userid, MIN(locationid) AS locationid, site
FROM mytable
GROUP BY site
ORDER BY site;

若允许取每组任意一条记录,也可直接用GROUP BY site(注意需关闭ONLY_FULL_GROUP_BY模式,或确保数据库兼容该写法):

SELECT userid, locationid, site
FROM mytable
GROUP BY site
ORDER BY site;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:32:41