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

Oracle SQL需求:相同username仅在首行显示对应id

同username仅首次显示id的实现方法

针对你的需求,下面是几种主流数据库的具体实现方案:

MySQL 方案

利用ROW_NUMBER()窗口函数,按username分组后指定排序规则(用来定义「首次出现」的顺序),当行号为1时显示id,其余行显示NULL。

示例代码:

SELECT 
    username,
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY username ORDER BY id) = 1 THEN id ELSE NULL END AS id
FROM your_table;

提示:ORDER BY id是默认用id排序来确定首次顺序,如果你有记录插入时间(比如create_time),换成ORDER BY create_time会更贴合实际插入顺序。

PostgreSQL 方案

逻辑和MySQL完全一致,窗口函数用法通用:

SELECT 
    username,
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY username ORDER BY id) = 1 THEN id ELSE NULL END AS id
FROM your_table;

SQL Server 方案

同样使用窗口函数实现:

SELECT 
    username,
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY username ORDER BY id) = 1 THEN id ELSE NULL END AS id
FROM your_table;

兼容老版本数据库的方案

如果你的数据库不支持窗口函数,可用子查询判断当前行是否为该username对应最小id的记录:

SELECT 
    t1.username,
    CASE WHEN t1.id = (SELECT MIN(id) FROM your_table t2 WHERE t2.username = t1.username) THEN t1.id ELSE NULL END AS id
FROM your_table t1;

注意:如果同一个username存在多个相同的最小id(一般id是主键不会出现这种情况),该方案会显示多个id,优先推荐窗口函数的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:03:13