2010-11-28 9 views
2

H alle, die ich eine Hilfe benötigen, Ich brauche einige IDs von Produkt zu ändern:Hilfe mit UPDATE-Abfrage in SQL Server

SELECT * 
FROM user_item 
SET item_type='8063' 
WHERE item_type ='8051 

Ok ... einfach, aber haben ein Problem

Manchmal I muss aktualisiert werden und + 1 Element hinzufügen. Und ich weiß wirklich nicht, was ich tun soll.

Beispiel:

set item_type='962' And add 963 
where item_type='8077' 

jemand hier kann mir bitte helfen?

Tks

Antwort

1
UPDATE user_item 
SET item_type = 962 + 1 
WHERE item_type = '8077' 
+0

Die beiden Werte in der Anweisung set sind willkürlich. Sie können für diesen Ausdruck eine beliebige Zahl zu einer anderen hinzufügen. –

0
;with CTE as 
( select item_type, 
      case 
       when item_type = '962' then CONVERT(varchar(50), convert(int, item_type) + 963) 
       else CONVERT(varchar(50), convert(int, item_type) + 1) 
      end as new_item_type 
    from user_item) 
update CTE 
set  item_type = new_item_type 

Im Idealfall sollten Sie den neuen Elementtyp in einer anderen Tabelle oder durch eine andere Regel nachschlagen, anstatt eine große, hässliche und spröde Fall Aussage. Dieses Beispiel funktioniert für die Informationen, die Sie in der Frage angegeben haben. Experimentieren Sie mit der SQL-Anweisung im CTE vor dem Update.

PS: Ist Ihr Datentyp wirklich ein Varchar? Wenn Sie mathematische Operationen an den Daten durchführen, sollten diese sicherlich Ganzzahlen sein. Sie erhalten eine bessere Leistung beim Nachschlagen und Indizieren, und sie benötigen weniger Speicherplatz als sie als Varchar speichern.

0

Oder wenn Sie ein weiteres Feld mit item_type = 963 hinzufügen möchten (wenn ich das richtig verstanden habe), können Sie eine zusätzliche verwandte Einfügeabfrage ausführen, wenn Sie den item_type Wert des fraglichen Artikels ändern.