Поиск…
Синтаксис
- Таблица 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