我想这样做:

...
with blocking_index as (
  (select * from exact_phone_matches) union all (select * from
   exact_email_matches)
),
matched_names as (
  select * from get_matches((_rec.name, 'blocking_index')
  )
)
...

即,我想将对CTE别名(“blocking_index”)的引用传递到函数中。此函数包含如下内容:
return query execute format('select * from %s where %s', _table, _whr)

这不管用。我还有别的办法吗?

最佳答案

对于定义CTE的查询之外没有任何意义的CTE,您不能这样做。
你可以用一张临时桌子。这还有一个额外的优势,即您可以ANALYZE它,这样优化器就有了统计信息,这在CTE中是不可能的。

关于postgresql - Postgres:在函数中引用CTE别名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49253747/

10-16 15:05