Запрос Sql для обновления базы данных, если значение не равно нулю?
У меня есть таблица, содержащая около 17 полей. Мне нужно выполнять частое обновление в этой таблице. Но проблема каждый раз, когда я могу обновлять только несколько полей. Каков наилучший способ написать запрос для обновления в таком сценарии? Я ищу вариант, в котором значение обновляется, только если оно не является нулевым.
Например, у меня есть четыре поля в базе данных Say A, B, C, D.
Пользователь обновляет значение слова D. Все остальные значения остаются неизменными. Поэтому я хочу, чтобы запрос обновления обновлял только значение D, сохраняя остальные неизменными.
SO, если я положил a, b и c как null и d со значением, предоставленным пользователем. Я хочу написать запрос обновления, который обновляет только значение d как a, b и c, равно null.
Это что-то достижимо?
Я использую базу данных SQLite.
Неужели кто-то может пролить свет на него?
Ответы
Ответ 1
Не зная вашу базу данных, сложно быть конкретным. В SQL Server синтаксис будет что-то вроде...
UPDATE MyTable
SET
Field1 = IsNull(@Field1, Field1),
Field2 = IsNull(@Field2, Field2),
Field3 = IsNull(@Field3, Field3)
WHERE
<your criteria here>
ИЗМЕНИТЬ
Поскольку вы указали SQLLite... замените мою функцию IsNull
на COALESCE()
или поочередно просмотрите функцию IfNull
.
Ответ 2
UPDATE your_table
SET some_column = 42
WHERE some_column IS NOT NULL
Будет обновлен только some_column, если он не равен null
Ответ 3
Проводка решения SQL Server с двумя таблицами для потомков. Запрос объединяет две таблицы и обновляет значения, которые присутствуют. В противном случае поддерживается исходное значение.
table = table1, table2, каждая из которых имеет поле1 и поле2
update t1 WITH (ROWLOCK)
set T1.Field2 = ISNULL(T2.Field2,T1.Field2)
from Table1 T1 Join Table2 T2
ON T1.Field1 = T2.Field1