使用psql,我想使用常量列表作为表,如下所示:
SELECT *
FROM
sportstable as S,
('soccer', 'tennis', 'basketball') as T
WHERE
S.id = someFunction(T.????)
我有常量("occer"、"tennis"、"basketball"(,在这种情况下,我需要对它们应用一个函数,称为someFunction。
有可能在psql中执行这样的操作吗?我知道这个列表("occer"、"网球"、"篮球"(不是一个表,所以我可能在使用这个概念时犯了一个大错误,但我仍然很好奇psql中是否有这样的东西。
您很接近,可以使用values()
子句:
select *
from sportstable s
cross join (
values ('soccer'), ('tennis'), ('baskedball')
) as t(sport)
where s.id = somefunction(t.sport);
但这可能会复制sportstable
中的行,而您可能不需要这些行。
我想你更想要:
select *
from sportstable s
where exists (select *
from (
values ('soccer'), ('tennis'), ('baskedball')
) as t(sport)
where s.id = somefunction(t.sport));