我写了一个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。如何修复这个查询?
如果您的函数返回SETOF
表abc
,那么您可以编写如下查询:
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
);