对于使用SQL的所有数据库,我们能否以通用/通用方式实现类似于ROW_NUMBER()的功能?

时间:2015-01-14 11:46:35

标签: mysql sql database oracle subquery

在我的项目中,我允许用户从给定的选项和选项中选择他所选择的数据库。我需要编写考虑所有这些可选数据库的查询。因此,根据我的要求,有没有办法在MSSQL中实现类似于ROW_NUMBER()的通用功能?

1 个答案:

答案 0 :(得分:1)

这是您使用分析

的方式

Sqlserver

select top 10 row_number() over (order by name)
from sys.objects

的Oracle

select row_number() over (order by object_name)
from all_objects
where rownum<=10

注意我刚刚使用字典表生成一些测试数据 - 您可以使用自己的数据。

如果您想要一个唯一的(非顺序键),您可以使用guid

Sqlserver

select top 10 NEWID()
from sys.objects

的Oracle

select sys_guid()
from all_objects
where rownum<=10

Sqlserver甚至还有NEWSEQUENTIALID()来创建一个顺序guid,它解决了为大量值索引guid的问题。