Как я могу обновить, где данное условие выбора возвращает истинное значение? - PullRequest
3 голосов
/ 10 ноября 2010

Я хочу выполнить обновление SQL

UPDATE  incCustomer SET etaxCode = 'HST' WHERE 

только на записях, где это правда.

select  etaxCode
from  incCustomer
left join incAddress on incCustomer.iAddressId = incAddress.iId
left join incProvince on incAddress.iProvinceStateId = incProvince.iId
where incAddress.iProvinceStateId in (     2  ,     3   ,      4   ,    6   ,   9 )

Я не думаю, что это возможно с ANSI SQL, но можно ли это сделать в MySQL?

1 Ответ

4 голосов
/ 10 ноября 2010

Синтаксис MySQL UPDATE поддерживает соединения в синтаксисе ANSI-89 и ANSI-92.

Использование:

   UPDATE INCCUSTOMER c
LEFT JOIN INCADDRESS a ON a.iid = c.iaddressid
LEFT JOIN INCPROVINCE p ON p.iid = a.iprovincestateid
      SET c.etaxcode = 'HST'
    WHERE a.iProvinceStateId IN (2,3,4,6,9)

Не вижу смыслаЛЕВАЯ ПРИСОЕДИНЯЙТЕСЬ К ОБЛАСТИ ОБЛАСТИ - Я думаю, что ваше ОБНОВЛЕНИЕ может быть записано как:

   UPDATE INCCUSTOMER 
      SET c.etaxcode = 'HST'
    WHERE EXISTS(SELECT NULL
                   FROM INCADDRESS a
                  WHERE a.iid = INCCUSTOMER.iaddressid
                    AND a.iProvinceStateId IN (2,3,4,6,9))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...