【发布时间】:2013-09-21 13:58:07
【问题描述】:
我正在尝试对 Jooq 执行以下操作,但我一生都无法弄清楚如何正确执行此操作:
select name, id in (
select capability_id
from a.capabilities_users
where user_id = ?)
from a.capabilities;
基本上我想获取所有项目(功能)并了解每个项目是否适用于特定用户。似乎所有条件类型运算符(如大于或 in)只能用于 where 而不能用于 select。我想不出还有什么办法来表达这一点。
最坏的情况,我可以做一个选择计数,然后用 Java 做布尔逻辑,但我希望使用 fetchMap。
【问题讨论】:
-
你在使用 jOOQ 的什么数据库?大多数数据库不允许在投影中使用谓词,所以我怀疑这可能是 PostgreSQL?
-
@LukasEder:该语法在 Postgres 中也是无效的。我认为 SQL 只是作为示例,它绝对不是有效的 SQL
-
@a_horse_with_no_name:适用于 PostgreSQL。 sqlfiddle.com/#!12/d41d8/1651。事实上,从jOOQ的集成测试经验来看,我可以说它可以与Derby、H2、HSQLDB、MariaDB、MySQL、PostgreSQL和SQLite一起使用
-
@LukasEder:我的立场是正确的;)谢谢你的例子,一个人真的永远不会停止学习......
-
哇,我不知道我在做任何异国情调的事情。有趣的博文。 :-) 我正在使用 PostgreSQL 顺便说一句。爱它。也很喜欢jOOQ!