Postgresql 如何按姓名首字母顺序对表格排序?
我有一个包含“employeename”和“id”列的表,如何按照姓名首字母的字母顺序对“employeename”列进行排序 现在假设桌子是这样的:Postgresql 如何按姓名首字母顺序对表格排序?,postgresql,Postgresql,我有一个包含“employeename”和“id”列的表,如何按照姓名首字母的字母顺序对“employeename”列进行排序 现在假设桌子是这样的: employeename rid eid Dave 1 1 Ben 4 2 Chloe 6 6 我尝试了命令ORDER BY,它显示了我想要的,但是当我通过SELECT再次查询数据时,显示的表数据与原始数据相同,指示ORDER BY
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
显示的表格数据与原始数据相同,指示顺序不修改数据,是否正确
SELECT *
FROM employee
ORDER BY employeename ASC;
是的,这是正确的。SELECT
语句不会更改表中的数据。只有UPDATE
、DELETE
、INSERT
或TRUNCATE
语句才会更改数据
然而,您的问题显示了对关系数据库如何工作的误解
表(关系数据库)中的行不会以任何方式排序。你可以把它们想象成篮子里的球
如果要以特定的排序顺序显示数据,则只有在SELECT语句中使用一个排序依据。除此之外别无选择
Postgres允许定义一个视图,其中包含一个
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不够聪明,无法从视图的定义中删除(无用的)orderby
一些相关问题: