gpt4 book ai didi

sql - postgresql 在哪里约束 View 并将结果发送到函数?

转载 作者:行者123 更新时间:2023-11-29 13:34:18 25 4
gpt4 key购买 nike

我需要对一个非常大的表中的一组行进行一些非常复杂的操作。

操作(基于 JOIN、UNION 和多个 ORDER BY 的“回填”空属性)似乎最好在函数中完成。为了最大限度地减少行数,我需要在一开始就使用 WHERE 子句。

因为所有这些都将与 Rails 对话,所以外层需要是一个 VIEW。

减去我所拥有的回填

CREATE OR REPLACE VIEW testing.for_sale_layouts_view
AS SELECT * from bestforsalelayout((select address_id from public.for_sale_layouts limit 1));
;

CREATE OR REPLACE FUNCTION bestforsalelayout(addr_id int)
RETURNS public.for_sale_layouts
AS $$
select * from public.for_sale_layouts where address_id = addr_id;
$$
LANGUAGE SQL IMMUTABLE;

像这样叫

select * from testing.for_sale_layouts_view where address_id = <addr_id>;

这种方法可行,但是如果 for_sale_layouts 返回的行不止一行,则该函数不返回任何内容,单个行可以正常工作。

我很茫然,非常感谢工作方向的指示。

最佳答案

如果要返回多行,则需要函数的return table 形式。

查看文档 here .

CREATE OR REPLACE FUNCTION bestforsalelayout(addr_id int)
RETURNS table(for_sale_layouts int)
AS $$
select for_sale_layouts from public.for_sale_layouts where address_id = addr_id;
$$

关于sql - postgresql 在哪里约束 View 并将结果发送到函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com