postgresql - psql 将值的常量列表用作表
问题描述
使用 psql 我想将常量列表用作表,如下所示:
SELECT *
FROM
sportstable as S,
('soccer', 'tennis', 'basketball') as T
WHERE
S.id = someFunction(T.????)
我有常量('soccer'、'tennis'、'basketball'),在这种情况下我需要对它们应用一个名为 someFunction 的函数。
是否可以在 psql 中做这样的事情?我知道 list ('soccer', 'tennis', 'basketball') 不是一张桌子,所以我在使用这个概念时可能会犯一个大错误,但我仍然很好奇 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));
推荐阅读
- python - 如何转换张量流模型并加载为 tfds
- java - 在登录测试中未在 SecurityContext 中找到 Authentication 对象
- java - 将数组的特定元素从一个数组移动到另一个不同大小的数组
- javascript - 如何使用 javascript 在 DOM 中添加 laravel 组件
- flutter - 如何在应用程序中显示数据列表?
- node.js - 如何在获取模块获取流中捕获无效的 url 错误?
- unity3d - ArgumentException:无法创建没有有效负载数据的数据处理程序
- c++ - C++ 不能使用带有类成员的模板模板类
- python - 我的麦克风不适用于谷歌识别器
- java - 调用 Java/Scala 方法的最早方法是什么?