我有一个包含“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
显示的表数据与原始数据相同,表明 ORDER BY 不修改数据,这是正确的吗?
是的,这是正确的。一个SELECT
语句不更改表中的数据。只有UPDATE
, DELETE
,INSERT
或TRUNCATE
语句会更改数据。
但是,您的问题显示了对关系数据库如何工作的误解。
(关系数据库的)表中的行没有以任何方式排序。你可以把它们想象成篮子里的球。
如果要按特定排序顺序显示数据,唯一(实际上:唯一)方法是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] 删除。
我来说两句