Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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 SELECT*FROM表格未按插入顺序检索行_Sql Server - Fatal编程技术网

Sql server SELECT*FROM表格未按插入顺序检索行

Sql server SELECT*FROM表格未按插入顺序检索行,sql-server,Sql Server,我有一个10万行的表,每行生成ID。 当我从表中选择*时,它不会按插入的顺序检索行 结果集按ID的顺序排列 是否需要由订购?为什么不按插入顺序进行检索。是的,唯一能保证查询返回结果的顺序的是在该查询的最外层应用的orderby子句 任何你可能观察到的,可能使你相信某个特定顺序会被优先选择的东西,都是巧合 如果插入顺序对您很重要,我还建议您显式地将其存储在datetime2列中,因为我通常还建议您不要对IDENTITY列的数值赋予任何意义-将其视为恰好适合数字列的不透明blob,稍后您将避免许多其

我有一个10万行的表,每行生成
ID
。 当我从表中选择*时,它不会按插入的顺序检索行

结果集按ID的顺序排列

是否需要由订购?为什么不按插入顺序进行检索。

是的,唯一能保证查询返回结果的顺序的是在该查询的最外层应用的
orderby
子句

任何你可能观察到的,可能使你相信某个特定顺序会被优先选择的东西,都是巧合


如果插入顺序对您很重要,我还建议您显式地将其存储在
datetime2
列中,因为我通常还建议您不要对
IDENTITY
列的数值赋予任何意义-将其视为恰好适合数字列的不透明blob,稍后您将避免许多其他问题(请参阅本网站上约5亿个关于为什么
IDENTITY
列包含间隙或跳1000以了解原因的问题)

是。
ORDER by
是按特定顺序获得select语句结果所必需的。这是因为关系数据库中的表本质上是无序集。
没有
orderby
子句,任何关系数据库都无法保证从select语句返回的记录的顺序。
虽然您可能多次运行相同的select而不使用order by获得相同的行顺序,但不能保证每次都以该特定顺序返回

从维基百科的页面上(强调我的)

关系被定义为具有相同属性的一组元组。元组通常表示一个对象以及关于该对象的信息。对象通常是物理对象或概念。关系通常被描述为一个表,它被组织成行和列。属性引用的所有数据都在同一个域中nd符合相同的约束条件

关系模型指定关系的元组没有特定的顺序,而元组又不对属性施加顺序。应用程序通过指定查询来访问数据,这些查询使用诸如选择来标识元组、投影来标识属性和连接来组合关系等操作。关系可以可以使用insert、delete和update运算符修改。新元组可以提供显式值,也可以从查询中派生。类似地,查询可以标识要更新或删除的元组


你可能是说行而不是列