2017-04-26 4 views
1

Wir versuchen, eine Preistabelle zu aktualisieren, mit der folgenden Abfrage. Wenn der Aktualisierungsteil nicht enthalten ist, werden die richtigen Ergebnisse zurückgegeben. Wenn wir jedoch den Aktualisierungscode einschließen, aktualisiert er jeden Datensatz in der Tabelle.SQL-Update, alles in der Tabelle aktualisieren

Wohin gehen wir falsch?

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') 

Vielen Dank im Voraus

Antwort

1

Sie haben keine where-Klausel in Ihrem Update. Verwenden Sie das Update, das Sie für Ihre SELECT-Anweisung haben.

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') 
Verwandte Themen