Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何按姓名首字母顺序对表格排序?_Postgresql - Fatal编程技术网

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

Postgresql 如何按姓名首字母顺序对表格排序?,postgresql,Postgresql,我有一个包含“employeename”和“id”列的表,如何按照姓名首字母的字母顺序对“employeename”列进行排序 现在假设桌子是这样的: employeename rid eid Dave 1 1 Ben 4 2 Chloe 6 6 我尝试了命令ORDER BY,它显示了我想要的,但是当我通过SELECT再次查询数据时,显示的表数据与原始数据相同,指示ORDER BY

我有一个包含“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
显示的表格数据与原始数据相同,指示顺序不修改数据,是否正确

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


一些相关问题:


在RDBMS中,表中的记录不按特定顺序存储。只有显式的orderby才能保证按所需顺序返回行。表(关系数据库)中的行不会以任何方式排序。你可以把它们想象成篮子里的球。这是否意味着不需要对数据库中的数据进行排序,数据可以以任何顺序存在,重要的是如何获取和查看数据?@thinkvantagedu:正确(实际上你不能真正“对数据库中的数据进行排序”)