是否可以将顺序依据语句的排序显式保存在表中(SQL Server 版本 2017)



我有这个表

AGENT_CODE AGENT_NAME      WORKING_AREA                        
---------- ------------- ---------------
A001       Subbarao        Bangalore                           
A002       Mukesh          Mumbai                              
A003       Alex            London  

对上表进行排序应该会给我以下结果。

select * 
from table_name 
order by agent_name;
AGENT_CODE AGENT_NAME      WORKING_AREA                        
---------- ------------- ---------------
A003       Alex             London                           
A002       Mukesh           Mumbai                              
A001       Subbarao         Bangalore  

现在,我想保留我的表并将定位行的排序顺序永久保存到同一个表中

例如:当我跑步时

select * from table_name

结果应如下所示,无需排序

AGENT_CODE AGENT_NAME      WORKING_AREA                        
---------- ------------- ---------------
A003       Alex             London                           
A002       Mukesh           Mumbai                              
A001       Subbarao         Bangalore                                                         

例如:当我运行时,从table_name中选择*。结果应如下所示,无需排序

不,这是不可能的。SQL 表表示无序行集。如果查询中没有显式order by子句,数据库可以自由地按其喜欢的任何顺序返回行,并且不保证排序在随后执行同一查询时保持一致。

因此,如果您希望顺序一致,请在查询中使用order by子句。

您可以在表上创建一个聚集索引(如果还没有(。然后您的表格将按该顺序排序...但它不保证选择查询将按该顺序返回数据。只有通过按子句指定顺序才能做到这一点。

为什么不能使用订单?

最新更新