如何在DB2中永久按列名对表进行排序

时间:2019-04-08 06:53:39

标签: sql db2

我想按表名“ EmpID”对表“ Employee”进行排序,并使这些更改持久化。

这是我的员工表。 “ EmpID”是主键。

EmpID    EmpName  City

Ram       234     HYD   
Shyam     130     BLR 
Madan     894     KAN 
Ramesh    101     CHN 

所以我写了一个SQL查询

Select * FROM Employee ORDER BY EmpID ASC;   


        EmpID    EmpName  City

        Ramesh    101     CHN 
        Shyam     130     BLR
        Ram       234     HYD  
        Madan     894     KAN  

但它只会生成排序格式的resultSet,但实际表不会永久更改。

现在,当我运行Select * FROM Employee时,我会再次获得原始表,而不是更新后的表。

Select * FROM Employee;

            EmpID    EmpName  City

            Ram       234     HYD   
            Shyam     130     BLR 
            Madan     894     KAN 
            Ramesh    101     CHN 

那怎么办呢?

1 个答案:

答案 0 :(得分:0)

我认为您在这里缺少数据库原理的一些基本基础知识。存储引擎实际上并没有一个有序记录的概念,它只是根据插入顺序存储数据,并以最合适的方式将数据写入磁盘。

您可以通过遍历结果集并逐行将数据插入到新表中来尝试持久化数据,但是即使那样也不能保证您的订单。这意味着您每次添加/删除记录时都必须重复此操作。

确实没有正当的理由想要操纵数据的持久化方式。如果您有依赖于empId排序的数据在该表上运行的操作,则需要以这样的方式编写您的操作:它们使用order by子句检索数据。