我们可以为所有使用 SQL 的数据库以 generic/common 的方式实现类似于 ROW_NUMBER() 的功能吗?
Can we implement the functionality similar to ROW_NUMBER() in generic/common way for all databases using SQL ?
在我的项目中,我允许用户 select 从给定的选项中选择他的数据库,我需要考虑所有这些可选数据库来编写查询。因此,根据我的一个要求,有没有办法在 MSSQL 中实现类似于 ROW_NUMBER() 的通用功能?
这就是您使用解析的方式
SQL 服务器
select top 10 row_number() over (order by name)
from sys.objects
甲骨文
select row_number() over (order by object_name)
from all_objects
where rownum<=10
请注意,我刚刚使用字典表生成了一些测试数据 - 您可以使用自己的数据。
如果你想要一个唯一的(非顺序键)你可以使用 guid
SQL 服务器
select top 10 NEWID()
from sys.objects
甲骨文
select sys_guid()
from all_objects
where rownum<=10
Sqlserver 甚至有 NEWSEQUENTIALID () 来创建一个顺序 guid,它解决了他们为大量值索引 guid 的问题。
在我的项目中,我允许用户 select 从给定的选项中选择他的数据库,我需要考虑所有这些可选数据库来编写查询。因此,根据我的一个要求,有没有办法在 MSSQL 中实现类似于 ROW_NUMBER() 的通用功能?
这就是您使用解析的方式
SQL 服务器
select top 10 row_number() over (order by name)
from sys.objects
甲骨文
select row_number() over (order by object_name)
from all_objects
where rownum<=10
请注意,我刚刚使用字典表生成了一些测试数据 - 您可以使用自己的数据。
如果你想要一个唯一的(非顺序键)你可以使用 guid
SQL 服务器
select top 10 NEWID()
from sys.objects
甲骨文
select sys_guid()
from all_objects
where rownum<=10
Sqlserver 甚至有 NEWSEQUENTIALID () 来创建一个顺序 guid,它解决了他们为大量值索引 guid 的问题。