Sql server: пропустить обновление, если переменная не нуля

У меня проблема с базой данных SQL Server. Я хочу обновить значения ID, только если значение равно нулю, если есть значение, его следует пропустить -> не обновлять.

Я не знаю, как реализовать это «если еще» в SQL Server - может кто-нибудь мне подскажет?

Заранее спасибо.

Это мой псевдокод:

UPDATE dbo.mytable
IF FIELD1 IS NOT NULL SKIP --Don't update
ELSE IF FIELD1 IS NULL 
    SET FIELD1 (SELECT DISTINCT FIELD1 
                FROM mytable 
                WHERE {Some ID} = '123' 
                  AND FIELD1 IS NOT NULL) 

WHERE {Some ID} = '123'
AND FIELD1 IS NULL

Какое значение вы хотите установить?

Gordon Linoff 31.10.2018 13:00
0
1
106
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я думаю, вам нужно что-то вроде этого:

UPDATE dbo.mytable
    SET FIELD1 = ?
    WHERE FIELD1 IS NULL;

? является заполнителем для значения, которое вы хотите установить.

Если вы хотите установить значение «123»:

UPDATE dbo.mytable
    SET FIELD1 = (SELECT t2.FIELD1 FROM dbo.mytable t2 WHERE t2.ID = 123)
    WHERE FIELD1 IS NULL;
Ответ принят как подходящий
UPDATE t
    SET t.FIELD1 = ( SELECT DISTINCT TOP 1 FIELD1 
                     FROM mytable t2
                     WHERE SomeID = '123' 
                     AND FIELD1 IS NOT NULL )
FROM dbo.mytable t
WHERE FIELD1 IS NULL 
  AND SomeId = '123'

Большое спасибо, это именно то, что я искал.

Computer85 31.10.2018 15:42

Вы можете просто написать запрос ниже

 UPDATE dbo.mytable
 SET ID = 123
 WHERE ID IS NULL

Надеюсь, что это поможет вам. Он будет обновлять идентификатор только тогда, когда значение в поле идентификатора равно NULL.

Не совсем то, что ищет OP ... ID, по-видимому, является PK и, вероятно, никогда не будет нулевым.

user2366842 31.10.2018 14:33

Я уважаю ваш комментарий, но пользователь не дал должным образом свое требование.

Suraj Kumar 31.10.2018 15:00
UPDATE dbo.mytable
    SET FIELD1 = (SELECT DISTINCT FIELD1 
                 FROM mytable 
                 WHERE {Some ID} = '123' 
                 AND FIELD1 IS NOT NULL) 
WHERE {Some ID} = '123'
AND FIELD1 IS NULL --here your IF condition will get filter [[IF FIELD1 IS NOT NULL SKIP --Don't update]]

Другие вопросы по теме