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

思想优势杜

我有一个包含“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
a_horse_with_no_name

显示的表数据与原始数据相同,表明 ORDER BY 不修改数据,这是正确的吗?

是的,这是正确的。一个SELECT语句不更改表中的数据。只有UPDATE, DELETE,INSERTTRUNCATE语句会更改数据。

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

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

如果要按特定排序顺序显示数据,唯一(实际上:唯一)方法是ORDER BY在 SELECT 语句中使用 an 没有其他选择。


Postgres 允许定义一个 VIEW,其中包含一个ORDER BY对您来说可能是可接受的解决方法:

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从视图定义中删除(无用)


一些相关问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章