通过将表的特定分区与另一个表连接来进行查询将返回部分字段

时间:2018-02-28 04:14:17

标签: java jooq

执行下面的语句时,结果记录只有表B的字段,但如果我用select(A.fields())替换select()。select(B.fields()),我得到的字段为A和B都是这种预期的行为吗?我会假设所有字段都像进行常规连接一样。

DSL.using(configuration())
                .select()
                .from(DSL.table("{0} partition (p2)", A))
                .join(B)
                .on(A.ID.eq(B.A_ID))
                .where(A.ID.eq(uuid))
                .fetchOne()

1 个答案:

答案 0 :(得分:0)

这是jOOQ中的一个错误,原因是普通的SQL表与非纯SQL表混合在一起。 jOOQ应生成var isChromium = window.chrome, winNav = window.navigator, vendorName = winNav.vendor, isOpera = winNav.userAgent.indexOf("OPR") > -1, isIEedge = winNav.userAgent.indexOf("Edge") > -1, isIOSChrome = winNav.userAgent.match("CriOS"); if (isIOSChrome) { // is Google Chrome on IOS } else if ( isChromium !== null && typeof isChromium !== "undefined" && vendorName === "Google Inc." && isOpera === false && isIEedge === false ) { document.getElementById("content").style.display = "block"; $("body *:not(.info)").hide(); } else { document.getElementById("content").style.display = "none"; } 查询(因为纯SQL表的列对于jOOQ是未知的)。相关问题是: https://github.com/jOOQ/jOOQ/issues/7231

解决方法:

  • 明确选择所有列(如您在问题中所提到的),例如通过:

    Dim a As String = Microsoft.VisualBasic.right("I will be going to school in 2011!", 5)
    MsgBox("the value is:" & a)
    
  • 确保SELECT *子句中的所有表都是纯SQL表:

    .select(A.fields()).select(B.fields())