SQL Server:如果变量不为空,则跳过更新

时间:2018-10-31 11:59:05

标签: sql sql-server

我对SQL Server数据库有问题。我只想在ID的值为null时更新它们,如果有一个值,则应跳过->不更新。

我不知道如何在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

4 个答案:

答案 0 :(得分:5)

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'

答案 1 :(得分:0)

我认为您想要这样的东西:

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;

答案 2 :(得分:0)

您只需编写以下查询

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

希望这会对您有所帮助。仅当ID字段中的值为NULL时,才会更新ID。

答案 3 :(得分:0)

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]]
相关问题