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
GETDATE()
无法解决此问题,因为多行插入可能会获得相同的日期时间值
当然,您不必在输出中显示这一点 你的问题似乎在于这句话: 目前,该表的顺序如下:
ITEM_Description1
ITEM_Description2
ITEM_StockingType
ITEM_RevisionNumber
不,您的表没有隐式排序强>
虽然看起来像这样
强制执行resultset排序顺序的唯一方法是在最外层的SELECT
处使用order BY
-子句
如果要保持插入的排序顺序,可以使用
- 类似于
的列(将自动增加序列计数器)ID INT IDENTITY
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。现在,由于已经过去一个月了,我记不起确切的问题,需要再次深入研究,以找到更好的方法来回答您的问题。我很抱歉没有得到所有的信息来回复,但我上个月做了一个变通办法来继续前进。