Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ist es möglich, mehrere Aktualisierungen mit einer einzigen UPDATE-SQL-Anweisung durchzuführen?

Sie können eine Anweisung und mehrere Case-Anweisungen verwenden

update tbl
  set title = 
    case
      when title in ('a-1', 'a.1') then 'a1'
      when title in ('b-1', 'b.1') then 'b1'
      else title
    end

Dies führt natürlich dazu, dass jeder Datensatz geschrieben wird, und bei Indizes kann dies ein Problem darstellen, sodass Sie nur die Zeilen herausfiltern können, die Sie ändern möchten:

update tbl
  set title = 
    case
      when title in ('a-1', 'a.1') then 'a1'
      when title in ('b-1', 'b.1') then 'b1'
      else title
    end
where
  title in ('a.1', 'b.1', 'a-1', 'b-1')

Dadurch wird die Anzahl der Schreibvorgänge in die Tabelle reduziert.