postgre如何检查SQL自定义函数(返回SETOF表)返回的结果中是否存在id



我写了一个SQL函数,它返回一行table abc,就像这个

(889d47f6-bc9c-4036-8808-4b9e74bb5ab9,"2020-10-22 05:13:36.626066+00","2020-11-12 05:57:51.792671+00",9afbca19-402e-4edb-ab5b-bdeef25fc797,"testing","testing",37f095ef-f4a9-41a8-a9d3-48ccc08c66ff,"testing",,t,"2020-12-12 05:13:10.601+00",t)

然后我想在查询中使用此返回行来检查此返回行结果中是否存在id。其中CCD_ 3是第一列。

像这样的

select * from abc where abc.id not in (select function_name())

但是这个查询不起作用,因为它返回的是列而不是id。如何修复这个查询?

如果您的函数返回SETOFabc,那么您可以编写如下查询:

select * from abc where abc.id not in (select id from function_name());

在这里,您的函数返回表abc的结构。所以你可以把它当作一张桌子。

演示

使用not exists:

select *
from abc
where not exists (select 1
from function_name() f
where f.id = abc.id 
);

最新更新