如何按名字首字母顺序对表格排序?

时间:2019-02-01 09:34:18

标签: postgresql

我有一个表,其中包含“ employeename”和“ id”列,如何按照名字的字母首字母顺序对“ employeename”列进行排序?

说桌子现在是这样的:

employeename    rid    eid
Dave             1      1
Ben              4      2
Chloe            6      6

我尝试了命令ORDER BY,它显示了我想要的内容,但是当我再次通过SELECT查询数据时,显示的表数据与原始数据相同,指示ORDER BY并没有修改数据,对吗?

SELECT * 
FROM employee
ORDER BY employeename ASC;

我希望可以像这样修改表数据(按名称字母顺序排列):

employeename    rid    eid
Ben              4      2
Chloe            6      6
Dave             1      1

1 个答案:

答案 0 :(得分:1)

  

显示的表数据与原始数据相同,指示ORDER BY不修改数据,对吗?

是的,这是正确的。 SELECT语句不会更改表中的数据。只有UPDATEDELETEINSERTTRUNCATE语句会更改数据。

但是,您的问题显示出对关系数据库如何工作的误解。

(关系数据库的)表中的行不以任何方式排序。您可以将它们想象成篮子里的球。

如果要按特定的排序顺序显示数据,则 only (确实是 )的方法是使用ORDER BY在您的SELECT语句中。除此之外,别无选择。


Postgres允许定义一个包含ORDER BY的VIEW,这可能是您可以接受的解决方法:

CREATE VIEW sorted_employee;
AS
SELECT * 
FROM employee
ORDER BY employeename ASC;

然后您可以简单地使用

select *
from sorted_employees;

但是要注意缺点。如果运行select * from sorted_employees order by id,则数据将被排序两次。 Postgres不够聪明,无法从视图的定义中删除(无用的)order by


一些相关问题: