Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:不带排序的行号_Sql Server_Tsql - Fatal编程技术网

Sql server SQL Server:不带排序的行号

Sql server SQL Server:不带排序的行号,sql-server,tsql,Sql Server,Tsql,我想创建一个Select语句,按原样对列进行排序,而不进行排序 目前,该表的顺序如下: ITEM_Description1 ITEM_Description2 ITEM_StockingType ITEM_RevisionNumber 我不希望结果以任何方式是数字的,也不依赖于VariableID数字,但是对于行数(),我必须选择一些东西。有人知道我怎么能得到这样的结果吗 Row| VariableName --------------------- 1 | ITEM_Description

我想创建一个
Select
语句,按原样对列进行排序,而不进行排序

目前,该表的顺序如下:

ITEM_Description1
ITEM_Description2
ITEM_StockingType
ITEM_RevisionNumber
我不希望结果以任何方式是数字的,也不依赖于
VariableID
数字,但是对于
行数()
,我必须选择一些东西。有人知道我怎么能得到这样的结果吗

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

你的桌子没有固有的秩序。即使你连续100次收到订单,也不能保证在第101次收到订单


可以向表中添加标识列

您的表没有固有的顺序。即使你连续100次收到订单,也不能保证在第101次收到订单


可以向表中添加标识列

你的问题似乎在于这句话:

目前,该表的顺序如下:

ITEM_Description1
ITEM_Description2
ITEM_StockingType
ITEM_RevisionNumber
不,您的表没有隐式排序

虽然看起来像这样

强制执行resultset排序顺序的唯一方法是在最外层的
SELECT
处使用
order BY
-子句

如果要保持插入的排序顺序,可以使用

  • 类似于
    ID INT IDENTITY
    的列(将自动增加序列计数器)
在insert上使用
GETDATE()
无法解决此问题,因为多行插入可能会获得相同的日期时间值


当然,您不必在输出中显示这一点

你的问题似乎在于这句话:

目前,该表的顺序如下:

ITEM_Description1
ITEM_Description2
ITEM_StockingType
ITEM_RevisionNumber
不,您的表没有隐式排序

虽然看起来像这样

强制执行resultset排序顺序的唯一方法是在最外层的
SELECT
处使用
order BY
-子句

如果要保持插入的排序顺序,可以使用

  • 类似于
    ID INT IDENTITY
    的列(将自动增加序列计数器)
在insert上使用
GETDATE()
无法解决此问题,因为多行插入可能会获得相同的日期时间值

当然,您不必在输出中显示这一点

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

选择
变量名, (ORDER BY(SELECT NULL))上的行号()作为rownum 从
SeanVault.dbo.TempVarIDs

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

选择
变量名, (ORDER BY(SELECT NULL))上的行号()作为rownum 从

SeanVault.dbo.TempVarIDs

如果这样做,结果将是不确定的-无法保证每次都会以相同的顺序返回记录。这真的是你想要的吗?仅仅因为你现在看到这种排序并不意味着你总是看到这种排序。@SeanDon:你试图做的似乎没有多大意义。即使你找到了一种方法,行号也会比随机数好一点。你想用他们解决什么问题?不确定你想做什么。。。在您的情况下,Row_Number()OVER(ORDER BY NULL)as RowN将帮助
Row_Number()OVER(ORDER BY NULL)
将为您提供数字(以alroc的评论为准)。很抱歉,我忘了回到这里!如果您这样做,您的结果将是不确定的——无法保证每次都会以相同的顺序返回您的记录。这真的是你想要的吗?仅仅因为你现在看到这种排序并不意味着你总是看到这种排序。@SeanDon:你试图做的似乎没有多大意义。即使你找到了一种方法,行号也会比随机数好一点。你想用他们解决什么问题?不确定你想做什么。。。在您的情况下,Row_Number()OVER(ORDER BY NULL)as RowN将帮助
Row_Number()OVER(ORDER BY NULL)
将为您提供数字(以alroc的评论为准)。很抱歉,我忘了回到这里!为了澄清,选择NULL将根据我对您的问题的理解为您提供所需的结果。你说你想让记录不按顺序排列,按什么排序?我基本上只想给列表编号。第一个结果行表示1,第二个结果行表示2,依此类推。然后我想在其他地方使用这些数字。在那个特定的时刻,我有rowIDs。现在,由于已经过去一个月了,我记不起确切的问题,需要再次深入研究,以找到更好的方法来回答您的问题。很抱歉,我没有回复所有的信息,但我上个月做了一个变通办法来继续前进。为了澄清,选择NULL将根据我对您的问题的理解为您提供所需的结果。你说你想让记录不按顺序排列,按什么排序?我基本上只想给列表编号。第一个结果行表示1,第二个结果行表示2,依此类推。然后我想在其他地方使用这些数字。在那个特定的时刻,我有rowIDs。现在,由于已经过去一个月了,我记不起确切的问题,需要再次深入研究,以找到更好的方法来回答您的问题。我很抱歉没有得到所有的信息来回复,但我上个月做了一个变通办法来继续前进。