微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 如何用jOOQ表达“选择别名.*,otherAlias.Column From ..”

我试图使用jOOQ动态构建查询.到目前为止它确实很顺利,但现在我偶然发现了一个我似乎无法表达的案例.

这是我想要生成查询的简化版本:

Select alias.*,otherAlias.aColumn as aAlias  
From table as alias
inner join otherTable as otherAlias
on alias.someColumn = otherAlias.someOtherColumn
Where otherAlias.someOtherColumn in (????????)

我的问题是我似乎无法表达我需要它的SELECT部分​​.如果我只是使用:

.select() -> I get select *
.select(alias.fields()) -> I get Select *
.select((alias.fields() :+ field(name(otherAlias,aColumn)).as(aAlias)):_*) -> I get Select otherAlias.aColumn as aAlias

有没有办法用jOOQ表达这个?

声明的其余部分似乎按预期工作.我现在在Scala中使用jOOQ 3.10.7并且目标是Postgres,我的声明目前看起来像这样:

sql
   .select()
   .from(alias)
   .innerJoin(otherAlias)
   .on(field(name(alias,someColumn)).eq(field(name(otherAlias,someOtherColumn))))
.where(condition)

非常感谢.

更新:我找到了一种方法来表达这种似乎通过回退到纯sql的方式.但我仍然想知道是否有更好的方式来表达这一点.这作为选择:

.select((field(""""Alias".*"""),field(name(otherAlias,aColumn)).as(aAlias)):_*) -> I get Select "Alias".*,otherAlias.aColumn as aAlias

解决方法

假设你正在使用jOOQ 3.11(增加了对 unqualified asterisksqualified asterisks支持),你可以写
alias.asterisk()

甚至,使用jOOQ’s scala extensions

alias.*

使用代码生成器时,这尤其强大.

原文地址:https://www.jb51.cc/mssql/76978.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐