Поиск…
Синтаксис
-  Таблица UPDATE 
 SET column_name = значение , column_name2 = значение_2 , ..., column_name_n = значение_n
 Условие WHERE ( логическое условие operator_n )
Обновление всех строк
В этом примере таблица Cars используется в примерах баз данных.
UPDATE Cars
SET Status = 'READY'
 Этот оператор установит столбец «status» всех строк таблицы «Cars» в «READY», потому что у него нет WHERE для фильтрации набора строк. 
Обновление заданных строк
В этом примере таблица Cars используется в примерах баз данных.
UPDATE 
    Cars
SET 
    Status = 'READY'
WHERE 
    Id = 4
Это утверждение установит статус строки «Автомобили» с id 4 на «READY».
 Предложение WHERE содержит логическое выражение, которое оценивается для каждой строки. Если строка соответствует критериям, ее значение обновляется. В противном случае строка остается неизменной. 
Изменение существующих значений
В этом примере таблица Cars используется в примерах баз данных.
UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4
 Операции обновления могут включать текущие значения в обновленной строке. В этом простом примере TotalCost увеличивается на 100 для двух строк: 
- Общая стоимость автомобиля №3 увеличена с 100 до 200
- Общая стоимость автомобиля №4 увеличена с 1254 до 1354
Новое значение столбца может быть получено из его предыдущего значения или любого значения другого столбца в той же таблице или объединенной таблице.
UPDATE с данными из другой таблицы
 Приведенные ниже примеры заполняют PhoneNumber для любого Сотрудника, который также является Customer и в настоящее время не имеет номера телефона, установленного в таблице Employees . 
(В этих примерах используются таблицы Employees and Customers из примеров баз данных.)
Стандартный SQL
Обновление с использованием коррелированного подзапроса:
UPDATE 
    Employees
SET PhoneNumber =
    (SELECT 
         c.PhoneNumber
     FROM 
         Customers c
     WHERE 
         c.FName = Employees.FName 
         AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL
SQL: 2003
 Обновление с помощью MERGE : 
MERGE INTO 
    Employees e
USING 
    Customers c 
ON 
    e.FName = c.Fname 
    AND e.LName = c.LName
    AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
   UPDATE 
      SET PhoneNumber = c.PhoneNumber
SQL Server
 Обновление с помощью INNER JOIN : 
UPDATE 
    Employees
SET 
    PhoneNumber = c.PhoneNumber
FROM 
    Employees e
INNER JOIN Customers c
        ON e.FName = c.FName 
        AND e.LName = c.LName
WHERE 
    PhoneNumber IS NULL
Захват обновленных записей
Иногда хочется записать только что обновленные записи.
CREATE TABLE #TempUpdated(ID INT)
Update TableName SET Col1 = 42
    OUTPUT inserted.ID INTO #TempUpdated
    WHERE Id > 50