SQL Server:没有排序的行号

时间:2017-02-02 20:36:28

标签: sql-server tsql

我想创建一个Select语句,按照排序对列进行排序。

目前,该表格的顺序如下:

ITEM_Description1
ITEM_Description2
ITEM_StockingType
ITEM_RevisionNumber

我不希望结果以任何方式数字化,也不希望取决于VariableID数字,但是ROW_Number(),我必须选择一些东西。有谁知道我怎么能得到这样的结果?

Row| VariableName
---------------------
 1 | ITEM_Description1
 2 | ITEM_Description2
 3 | ITEM_StockingType
 4 | ITEM_RevisionNumber

我的示例代码如下所示。

SELECT  
    VariableName, 
    ROW_NUMBER() OVER (ORDER BY VariableID) AS RowNumber
FROM    
    SeanVault.dbo.TempVarIDs

3 个答案:

答案 0 :(得分:4)

使用ORDER BY(SELECT NULL)将为您提供所需的结果。

选择
    变量名,     ROW_NUMBER()OVER(ORDER BY(SELECT NULL))AS rownum 从
    SeanVault.dbo.TempVarIDs

答案 1 :(得分:1)

你的问题似乎与这句话有关:

  

目前,该表格的顺序如下:

不,您的表格未被隐式订购!!

虽然看起来像这样......

强制执行结果集排序顺序的唯一方法是在ORDER BY最外面的SELECT - 子句。

如果要维护插入的排序顺序,可以使用

  • ID INT IDENTITY这样的列(会自动增加序列计数器)

在插入时使用GETDATE()将无法解决此问题,因为多行插入可能会获得相同的DateTime值。

您当然不必在输出中显示此内容......

答案 2 :(得分:0)

你的桌子没有固有的顺序。即使您连续100次获得该订单也不能保证在101次时该订单。

您可以向表格添加标识列。