присоединиться к обновлению в db2 - PullRequest
0 голосов
/ 20 ноября 2018

Я получаю сообщение об ошибке при попытке обновить с помощью объединения в db2, что «внутреннее» не ожидается и вместо этого ожидает «set».

Глядя на запрос, я понимаю, что это такоеговоря, но я в замешательстве: не можете ли вы выполнить объединение в обновлении DB2?

Я обычно использую MySQL, но этот скрипт должен работать с базой данных db2, и я никогда не сталкивался с этой проблемойно похоже, что это должно быть правильно, используя db2 для iseries 7.2

UPDATE data d
    inner join sales s
    ON d.sku_id = s.id
SET expire_date = (to_date(:SHIPDATE, 'YYYYMMDD') + 127 DAYS) ,
    quantity = cast(:QUANTITY as int)
WHERE d.custID = cast(:cust as int)

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Предложение Exists можно использовать в операторе обновления DB2 for Iseries.Я просто взял объединение и переместил его в пункт, где существует.Вы обновили только одну таблицу с предоставленными значениями, так что это было легко преобразовать.

    UPDATE data d
        SET expire_date = (to_date(:SHIPDATE, 'YYYYMMDD') + 127 DAYS) ,
        quantity = cast(:QUANTITY as int)
    WHERE d.custID = cast(:cust as int)
    and exists ( 
    select s.id from 
     sales s
      where d.sku_id = s.id
    )
0 голосов
/ 20 ноября 2018

Я думаю, что вы можете использовать предложение from в DB2:

UPDATE data d
    SET expire_date = (to_date(:SHIPDATE, 'YYYYMMDD') + 127 DAYS) ,
        quantity = cast(:QUANTITY as int)
FROM sales s
WHERE d.sku_id = s.id AND
      d.custID = cast(:cust as int);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...