2017-04-26 94 views
1

我們正在嘗試使用以下查詢更新定價表。當不包含更新部分時,結果將返回正確的記錄數。但是當我們包含更新代碼時,它會更新表中的每條記錄。SQL更新,更新表中的所有內容

我們去哪裏錯了?

UPDATE pricelist 
    SET plfromdate = '2017-05-01',  -- from date 

    pltodate = '2037-04-30',   -- to date 

    plunitprice = plunitprice * 1.09 -- % to be applied 
    USE whatifdb 
    SELECT   pg.pgmaster pgmast, 
      * 
    FROM   pricelist pl 
    LEFT OUTER JOIN allpartmaster pm 
    ON    pl.plpart = pm.partnum<br> 
    LEFT OUTER JOIN partgroup pg 
    ON    pm.prodgroup = pg.pgcode<br> 
    WHERE   pltype = 'SUN' 
    AND    pgcode NOT IN ('CABMCL', 
          'CABPOD', 
          'CABSTDH', 
          'CABSTD', 
          'CABSTDI', 
          'CABTEK') (<br>SELECT DISTINCT pricelistid 
      FROM   customeraddresses<br> 
      WHERE   currencyid = 'STG') 

在此先感謝

回答

1

您不必在更新任何where子句。 使用您在select語句中的更新。

update pl 
set plfromdate = '2017-05-01', -- from date 
pltodate = '2037-04-30', -- to date 
plunitprice = plunitprice * 1.09 -- % to be applied 
from pricelist pl 
left outer join allpartmaster pm on pl.plpart = pm.partnum 
left outer join partgroup pg on pm.prodgroup = pg.pgcode 
where pltype = 'SUN' and pgcode not in ('CABMCL', 'CABPOD', 'CABSTDH', 'CABSTD', 'CABSTDI', 'CABTEK') (
select distinct pricelistid from customeraddresses 
where currencyid = 'STG')