我有下面的表格
DBName Server Status UpdateTime
DB1 server1 NULL 5/4/2019
DB1 server1 NULL NULL
DB2 server2 NULL 6/4/2019
DB2 server2 NULL 6/4/2019
DB3 server2 NULL NULL
DB3 server2 NULL NULL
有时,当我单击select rows时,它会以某种方式重新排列一些随机行。此外,如果我单击编辑,我会注意到行已被重新排列。为什么会发生这种情况?
DBName Server Status UpdateTime
DB1 server1 NULL 5/4/2019
DB2 server2 NULL 6/4/2019
DB3 server2 NULL NULL
DB3 server2 NULL NULL
DB2 server2 NULL 6/4/2019
DB1 server1 NULL NULL
我的意思是,这并不会造成问题,但我有3个环境,当行的顺序不同时,很难跨环境比较结果。
起初,这是在我在家远程工作时发生的。所以我认为这可能是VPN/网络问题。但即使是在办公室,这种情况也会发生,因为我没有连接到VPN。
编辑:
这与这个问题不同,因为我没有主键
发布于 2019-06-04 20:41:46
SQL表没有固有的顺序。这是设计好的。如果您没有指定顺序,那么DBMS可以自由地以它认为合适的任何顺序返回行。这通常被证明是最初插入行的顺序,因此人们有时认为这是表的自然或固有顺序。但事实上,没有任何东西可以保证这一点,所以你不能依赖它。有时,正如您已经注意到的,DBMS可能会出于其自身的原因而决定以不同的方式做事情。
幸运的是,如果您希望以特定顺序一致地查看内容,那么解决方案很简单:必须在SELECT
查询中使用ORDER BY
子句。
如果你需要以一种非自然的方式进行排序(例如,按非字母顺序对varchar列进行排序),那么一个标准的解决办法是添加一个额外的“排序”列作为代理,并按该列进行排序。
https://stackoverflow.com/questions/56450981
复制