gpt4 book ai didi

postgresql - 为什么函数内部的查询不能正常工作?

转载 作者:行者123 更新时间:2023-11-29 14:28:05 27 4
gpt4 key购买 nike

我有这个查询返回我的学生至少有两个分数小于 3

SELECT s.name 
FROM result r
JOIN student s ON r.student_id = s.student_id
GROUP BY s.name
HAVING COUNT(mark <= 3) > 2;

我有这样的结果:

1 "John1"
2 "John10"
3 "John100"
4 "John1000"
5 "John10000"
6 "John100000"
7 "John10001"
8 "John10002"
9 "John10003"
10 "John10004"

但是当我基于这些查询创建一个函数时,它看起来像这样:

CREATE OR REPLACE FUNCTION public.red_zone()
RETURNS character varying
LANGUAGE 'sql'
VOLATILE
PARALLEL UNSAFE
COST 100
AS $BODY$
SELECT s.name
FROM result r
JOIN student s ON r.student_id = s.student_id
GROUP BY s.name
HAVING COUNT(mark <= 3) > 2;
$BODY$;

SELECT red_zone();

我有这样的结果:

1 "John1"

为什么会这样?如何修复?

最佳答案

您已经定义您的函数 RETURNS character varying 这是一个单一的值。您想要的是 RETURNS SETOF character varying 然后将其视为表或其他行源。

SELECT * FROM red_zone();

关于postgresql - 为什么函数内部的查询不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55530585/

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