【发布时间】:2021-12-17 22:45:21
【问题描述】:
我有一个挑战,其在于过滤查询不是使用表中不存在的值而是由函数检索的值。
让我们考虑一个包含数据库中所有销售额的表
id, description, category, price, col1 , ..... col n
我有一个功能可以从一个表中检索到一个类似的销售表(基于规则和业务逻辑)。该函数再次对sales表中的所有记录进行查询,并对部分字段进行匹配验证。
similar_sales (sale_id integer) - > returns a integer[]
现在我需要为销售表中的每一项列出所有类似的销售额。
select s.id, similar_sales (s.id)
from sales s
但similar_sales 可以为空,我只对包含至少一个的退货销售感兴趣。
select id, similar
from (
select s.id, similar_sales (s.id) as similar
from sales s
) q
where #similar > 1 (Pseudocode)
limit x
我无法在子查询中进行限制,因为我不知道哪些销售有相似之处。 我只是想对一组小行而不是整个表进行子查询以获得查询性能提升(分页策略)
【问题讨论】:
-
不确定你的问题是什么,how to count values in postgres array?
-
或者,让你的函数返回
NULL而不是一个空数组(如果你使用聚合,它可能已经这样做了),然后只写where similar is not null。
标签: postgresql