postgres:在 WHERE 子句中使用 CASE 和 ANY()
有什么方法可以让这项工作发挥作用吗?
SELECT
*
FROM table t
INNER JOIN othertable t2 USING (tid)
WHERE
t.tid =
CASE
WHEN t2.someboolval THEN ANY(ARRAY[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
ELSE ANY(ARRAY[77,66])
END
不幸的是,我不能只执行 t.tid = CASE WHEN t2.someboolval THEN 1 ELSE 2 END
因为我需要与数组进行匹配。这可行吗?
Is there some way to make this work?
SELECT
*
FROM table t
INNER JOIN othertable t2 USING (tid)
WHERE
t.tid =
CASE
WHEN t2.someboolval THEN ANY(ARRAY[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
ELSE ANY(ARRAY[77,66])
END
Unfortunately I can't just do t.tid = CASE WHEN t2.someboolval THEN 1 ELSE 2 END
because I need to match against an array. Is this doable?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用“与”/“或”。类似于:
编辑:格式化
Use AND/OR. Something like:
Edit: formatted
您必须更改 ANY 的位置:
You have to change place of ANY: