Выбирает в Joins - PullRequest
       27

Выбирает в Joins

1 голос
/ 28 июля 2011

У меня запрос

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 ]

2 голосов
/ 28 июля 2011

Вы не можете обновить псевдоним, вам нужно указать имя таблицы.

1 голос
/ 28 июля 2011

В дополнение к другим ответам JOIN (так же, как FROM) не допускается в UPDATE для H2.Это было бы разрешено в подзапросе.

По сути, придерживайтесь основного синтаксиса:

UPDATE SomeTable as SomeAlias
 SET SomeField = ?
 WHERE (%GoWild%)

Независимо от того, нужен ли вам псевдоним, зависит от условия where.

Ссылка: http://www.h2database.com/html/grammar.html#update

1 голос
/ 28 июля 2011

Я не верю, что FROM допускается в синтаксисе UPDATE.

...