在联接中选择

时间:2011-07-28 19:03:52

标签: sql h2

我有查询

UPDATE  THD 
SET     RepostFlag = 'Y'
        ,RunListNoRetroPolicyPrepay = ?
        ,RetroObject = ?  
FROM    TranHead AS THD  
            JOIN (
                    SELECT  CustPolicyNo AS CustPolicyNo
                            ,MIN(PremPeriod) AS PremPeriod 
                    FROM    TranHead 
                    WHERE   RepostFlag = 'Y' 
                            AND PayoutTypeNo = ? 
                    GROUP BY CustPolicyNo
            ) AS THDToBeReposted  ON THD.CustPolicyNo = THDToBeReposted.CustPolicyNo 
WHERE   THD.RepostFlag = 'N' 
        AND THD.PremPeriod >  THDToBeReposted.PremPeriod 

在H2中失败并显示以下消息

表格未找到“THD”;

我查看http://www.h2database.com/html/grammar.html#table_expression以查看H2是否支持加入中的选择。看起来确实如此。也许我在查看语法时遗漏了一些东西,但在我看来,查询应该在H2中工作。

有人看到了什么问题?

感谢。

3 个答案:

答案 0 :(得分:2)

您无法更新别名,您需要指定表名。

答案 1 :(得分:1)

我认为FROM语法中不允许UPDATE

答案 2 :(得分:1)

对于其他答案的补充,JOIN中的FROM UPDATE不允许使用UPDATE SomeTable as SomeAlias SET SomeField = ? WHERE (%GoWild%) 。它将被允许在子查询中。

基本上,坚持基本语法:

{{1}}

您是否需要别名取决于您的where子句。

参考:http://www.h2database.com/html/grammar.html#update