chr*_*ris 1 sql postgresql sql-order-by
我想在Postgres中运行一个SQL查询,它与你在没有order by子句的情况下运行初始查询所获得的完全相反.
因此,如果您的查询是:
SELECT * FROM users
Run Code Online (Sandbox Code Playgroud)
然后
SELECT * FROM users ORDER BY <something here to make it exactly the reverse of before>
Run Code Online (Sandbox Code Playgroud)
它会这样吗?
ORDER BY Desc
Run Code Online (Sandbox Code Playgroud)
您正在构建错误的假设,即您将以确定的顺序获取行:
SELECT * FROM users;
Run Code Online (Sandbox Code Playgroud)
你得到的是任意的.Postgres以其认为合适的任何方式返回行.对于简单查询,通常按其物理存储顺序排列,通常是输入行的顺序.但是没有保证,它可能会在两次调用之间的任何时间发生变化,例如当后台进程重新排序行时 - 就像VACUUM.或者更复杂的查询可能会根据索引或连接返回行.简而言之:关系数据库中的表行没有可靠的顺序,除非您指定它ORDER BY.
也就是说,假设您按照物理存储的顺序从上面的简单查询中获取行,这将使您获得相反的顺序:
SELECT * FROM users
ORDER BY ctid DESC;
Run Code Online (Sandbox Code Playgroud)
ctid是表示物理顺序的内部元组ID.有关: