我有下表
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
有时,当我单击“选择行”时,它会以某种方式重新排列一些随机行。另外,如果单击“编辑”,我会注意到行已重新排列。为什么会发生这种情况?
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。
编辑:
这与这个问题不同,因为我没有主键
答案 0 :(得分:5)
SQL表没有固有的顺序。这是设计使然。如果未指定顺序,则DBMS可以自由选择以合适的顺序返回行。通常,这通常是最初插入行的顺序,因此人们有时会认为这是表的自然顺序或固有顺序。但是实际上没有任何东西可以保证这一点,因此您不能依靠它。正如您所注意到的,DBMS有时可能出于自身原因决定采取不同的处理方式。
如果您要始终如一地查看特定顺序的内容,那么幸运的是,该解决方案简单明了:您必须在ORDER BY
查询中使用SELECT
子句。
如果您需要以非自然的方式进行排序(例如,以非字母顺序排序varchar列),那么标准的解决方法是添加一个额外的“ sort”列作为代理,然后通过该排序。 >