【问题标题】:Postgres ORDER BY twice DESC then ASC [duplicate]Postgres ORDER BY DESC 然后 ASC [重复]
【发布时间】:2019-05-29 00:45:12
【问题描述】:

我有一个递归查询

With RECURSIVE tree AS
 (
 SELECT * FROM comments WHERE id = 83
 UNION
 SELECT t.*
      From comments t
 JOIN tree rt ON rt.parent_id = t.id

 )
 SELECT * from tree ORDER BY id DESC LIMIT 5

如何通过 ASC 再订购一次?

Edit1: 尝试了这个解决方案: Get the last N rows in the database in order?

With RECURSIVE tree AS
 (
 SELECT * FROM comments WHERE id = 83
 UNION
 SELECT t.*
      From comments t
 JOIN tree rt ON rt.parent_id = t.id

 )
 select * from (SELECT * from tree ORDER BY id DESC LIMIT 5) order by id 

给我一​​个错误:

ERROR:  subquery in FROM must have an alias 

【问题讨论】:

  • 你能解释一下想要的顺序是什么吗?
  • 我尝试了那个解决方案,但它不起作用,这就是我发布的原因

标签: sql postgresql sql-order-by


【解决方案1】:

在 PostgreSQL 中,所有表表达式(FROM 之后的选择)都需要命名。也就是说,他们需要有一个别名。只需添加任何别名。比如我加了x,如:

With RECURSIVE tree AS
 (
 SELECT * FROM comments WHERE id = 83
 UNION
 SELECT t.*
      From comments t
 JOIN tree rt ON rt.parent_id = t.id

 )
 select * from (SELECT * from tree ORDER BY id DESC LIMIT 5) x order by id 

你发现了吗?

【讨论】:

  • 感谢您指出这一点
【解决方案2】:
select * from (SELECT * from tree ORDER BY comment_id DESC LIMIT 5) t order by comment_id    

【讨论】:

  • 错误:FROM 中的子查询必须有别名
猜你喜欢
  • 2016-12-31
  • 2020-02-19
  • 1970-01-01
  • 2020-03-09
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
相关资源
最近更新 更多