gpt4 book ai didi

sql - 反转 SELECT 语句的初始顺序

转载 作者:行者123 更新时间:2023-11-29 12:30:52 26 4
gpt4 key购买 nike

我想在 Postgres 中运行一个 SQL 查询,它与您在没有 order by 子句的情况下运行初始查询所获得的查询完全相反。

因此,如果您的查询是:

SELECT * FROM users 

然后

SELECT * FROM users ORDER BY <something here to make it exactly the reverse of before>

会不会就是这个?

ORDER BY Desc

最佳答案

您建立在不正确的假设之上,即您将以确定的顺序获取行:

SELECT * FROM users;

所得到的真是随心所欲。 Postgres 以任何它认为合适的方式返回行。对于简单查询,通常按其物理存储顺序排列,这通常是输入行的顺序。但是没有任何保证,并且顺序可能会在两次调用之间随时更改。例如在任何 UPDATE(编写新的物理行版本)之后,或者当任何后台进程对行重新排序时 - 如 VACUUM。或者更复杂的查询可能会根据索引或连接返回行。长话短说:关系数据库中的表行没有可靠的顺序,除非您使用 ORDER BY 指定它。

就是说,假设您按照物理存储 的顺序从上述简单查询中获取行,这将使您得到相反的顺序:

SELECT * FROM users
ORDER BY ctid DESC;

ctid是表示物理顺序的内部元组 ID。相关:

关于sql - 反转 SELECT 语句的初始顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com