首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PostgreSQL错误:运算符>>不是有效的排序运算符

PostgreSQL错误:运算符>>不是有效的排序运算符
EN

Stack Overflow用户
提问于 2012-07-20 13:30:18
回答 1查看 307关注 0票数 3

首先,我对postgresql不太有经验,所以我很抱歉。最近,我将服务器从PostgreSQLVersion8.3升级到了version 9,在恢复数据之后,在我的一个查询中遇到了运算符的问题,我无法解决这个问题。我想问:

database=#从dems顺序中选择bbox,bbox使用>>限制1;

bbox是我的表dems类型框中的一个列。

我得到了结果:

错误:运算符>>不是有效的排序运算符 第1行:使用>>限制1从dems命令中选择bbox; 提示:排序操作符必须是btree操作符族的"<“或">”。

我认为">>“操作符是内置在postgresql box中的,我想知道我在这里做错了什么。这个查询在8.3版中运行得很好。我的老同事编写了原始代码,并设置了服务器,因此我可能遗漏了几个恢复步骤。任何帮助都会很好,同时我会继续阅读文档。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-02-14 02:03:32

这里您的基本问题是,您似乎试图通过简单地对包含的框进行排序来生成包含它们的树。订购不是这样做的方法。相反,使用with递归查询和window函数(两者都需要8.4或更高版本的iirc)。在这种情况下,类似于:

代码语言:javascript
运行
复制
WITH RECURSIVE bbox_tree (id, bbox, level, position, path) AS
( select id, bbox, 1, rownumber() over (order by id), id::text
   from dems
  UNION ALL
 SELECT d.id, d.bbox, t.level + 1, rownumber over (partition by t.id order by d.id),
        p.path || ',' d.id
   FROM dems d
   JOIN bbox_tree t ON t.bbox >> d.bbox )
SELECT bbox FROM  bbox_tree order by string_to_array(t.path, ',');

实际上,你必须在这里创建一棵树。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11580387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档