gpt4 book ai didi

sql - 如何使用有序查询的结果调用函数

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

我正在尝试对符合按日期排序的查询的每个值调用一个函数。原因是(黑盒)函数在内部将值聚合到一个字符串中,我需要聚合值按时间戳顺序排列。

我尝试过的事情如下:(函数返回一个 bool 值并做一些我不知道也无法修改的黑盒事情)

-- This doesn't work
SELECT
bool_and (
function(MT.id)
)
FROM my_table MT
WHERE ...conditions...
ORDER BY MT.timestamp_value, MT.id

并得到错误column "mt.timestamp_value"must appear in the GROUP BY clause or be used in an aggregate function。如果我如下所示删除 ORDER BY,它也会起作用:

-- This works!
SELECT
bool_and (
function(MT.id)
)
FROM my_table MT
WHERE ...conditions...

我还尝试删除 function 并且只选择了 MT.id 并且它起作用了,但是它没有起作用。所以我尝试使用 GROUP BY 子句。为此,我尝试了:

-- This also doesn't work
SELECT
bool_and(
function(MT.id)
)
FROM my_table MT
WHERE ...conditions...
GROUP BY MT.id, MT.timestamp_value
ORDER BY MT.timestamp_value, MT.id

但这给出了错误用作表达式的子查询返回的多于一行。 MT.id 是主键 btw。它也可以在没有函数的情况下工作,只需 SELECT MT.id

理想情况下,修复上述任一代码位会很好,或者满足以下条件:

-- Not real postgresql code but something I want it to do
SELECT FUNCTION(id)
FOR EACH id in (MY SELECT STATEMENT HERE ORDERED)

回应@a_horse_with_no_name此代码属于另一个查询的一部分,如下所示:

SELECT Function2()
WHERE true = (
(my_snippet)
AND (...)
AND (...)
...
)

最佳答案

错误很明显。子查询 SELECT function(MT.id) 返回多于 1 行,调用函数 bool_and 一次只能对 1 行进行操作。调整子查询,使其只返回 1 条记录。

关于sql - 如何使用有序查询的结果调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57152037/

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