例
假设我的数据库中有两个属性(有序位置和随机数),我想要检索偶数之间的奇数.我该怎么做?
真正的用法
我想要找到具有类别name(而且这个词不是名字)的另外两个单词之间的单词.排序由句子和位置提供.
编辑
我想知道Postgresql的Window函数是否是这种问题的最佳解决方案,而不是执行查询.我听说过他们,但从未用过.
SELECT tokcat.textFROM ( SELECT text,category,chartype,lag(category,1) OVER w as prevIoUscategory,lead(category,1) OVER w as nextcategory FROM token t,textBlockHasToken tb WHERE tb.tokenID = t.ID WINDOW w AS ( PARTITION BY textBlockID,sentence ORDER BY textBlockID,sentence,position )) tokcatWHERE 'name' = ANY(prevIoUscategory)AND 'name' = ANY(nextcategory)AND 'name' <> ANY(category)
简体版本:
SELECT textFROM ( SELECT text,lag(category) OVER w as prevIoUs_cat,lead(category) OVER w as next_cat FROM token t JOIN textblockhastoken tb ON tb.tokenID = t.ID WINDOW w AS (PARTITION BY textblockID,sentence ORDER BY position) ) tokcatWHERE category <> 'name'AND prevIoUs_cat = 'name'AND next_cat = 'name';
要点
> = ANY()不需要,窗口函数返回单个值>子查询中的一些冗余字段>不需要按列进行排序,即PARTITION BY – ORDER BY适用于分区>不要使用混合的案例标识符,而不引用,它只会导致混淆. (更好的是:不要在Postgresql中使用混合大小写标识符)
总结以上是内存溢出为你收集整理的如何将当前行与PostgreSQL中的下一行和上一行进行比较?全部内容,希望文章能够帮你解决如何将当前行与PostgreSQL中的下一行和上一行进行比较?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)