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

Sybase ASE 16下替代row_number创建唯一列的解决方案问询

Sybase ASE 16 临时表新增唯一标识解决方案

方案1:建表时新增IDENTITY自增列(最推荐)

直接在临时表定义中添加identity属性的列,数据库会自动生成从1开始的连续递增整数,无需手动维护,性能最优:

CREATE TABLE #my_test (
    my_id int identity, -- 自增唯一标识列,自动赋值
    my_date datetime, 
    my_value float NULL 
)
go

-- 插入数据时无需指定my_id列
INSERT INTO #my_test SELECT '1-Nov-2021',100
INSERT INTO #my_test SELECT '2-Nov-2021',110
INSERT INTO #my_test SELECT '3-Nov-2021',100
INSERT INTO #my_test SELECT '4-Nov-2021',110
INSERT INTO #my_test SELECT '5-Nov-2021',108
INSERT INTO #my_test SELECT '6-Nov-2021',105
go

-- 查询直接返回带有序唯一标识的结果
select * from #my_test

方案2:不改表结构,查询时动态生成递增ID

如果临时表已经创建无法修改结构,可通过关联子查询计数生成行号,需选择一组唯一的字段作为排序依据:

select 
    t1.*,
    (select count(*) from #my_test t2 where t2.my_date <= t1.my_date) as my_id
from #my_test t1
order by my_id

若单个字段存在重复值,可组合多个字段保证计数唯一性,示例:
where t2.my_date <= t1.my_date and t2.my_value <= t1.my_value

方案3:生成无序唯一值

如果不需要ID有序,直接调用newid()生成全局唯一标识符即可:

select 
    *,
    newid() as my_unique_id
from #my_test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:11