gpt4 book ai didi

sql - 如何编写 SELECT 语句,其中条件是函数的结果

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

我想写一个SELECT语句如下:

SELECT field_a 
FROM my_table
WHERE field_b IN (my_function(field_c)).

这可能吗?

my_function 必须返回一个数组吗?

我正在使用 PostgreSQL 8.2

最佳答案

SELECT  *
FROM (
SELECT field_a, field_b, my_function(field_c) fc
FROM mytable
) q
WHERE field_b = fc

函数的返回类型应该是 SETOF(例如 SETOF INTSETOF VARCHAR 等)

请注意,您可以像这样使用 IN 样式的表达式:

SELECT  field_a, field_b
FROM mytable
WHERE field_b IN (SELECT my_function(field_c))

,但如果您的函数返回复杂类型,则前一种样式更可取,因为您可以比较复杂类型的一个字段并在一个查询中返回另一个字段,如下所示:

FUNCTION my_function RETURNS SETOF anothertable

/* This will return a set of records of same layout as in table "anothertable" */

SELECT field_a, field_b, fc.column1, fc.column2
FROM (
SELECT field_a, field_b, my_function(field_c) fc
FROM mytable
) q
WHERE field_b = fc.column1

我们在这里与column1比较,返回column1column2

这对于相关子查询是不可能的。

关于sql - 如何编写 SELECT 语句,其中条件是函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864487/

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