SQL Server查询:UPDATE SET一列

时间:2018-10-03 03:55:21

标签: sql sql-server sql-server-2008 sqlsrv

在查询更新中是否可以执行SET IN命令?

UPDATE table_a 
SET status IN (A, B, C) 
WHERE id IN (1, 2, 3)

我做了语法,但出现了错误:

  

关键字“ IN”附近的语法不正确。

4 个答案:

答案 0 :(得分:2)

如果要在单个查询中基于ID进行多个更新

UPDATE table_a
    SET status = CASE id
        WHEN 1 THEN A
        WHEN 2 THEN B
        WHEN 3 THEN C
    END
WHERE id IN (1,2,3)

我想这是您的要求,根据ID设置不同的状态

答案 1 :(得分:0)

您在下面的set子句上犯了错误,是正确的sql

UPDATE table_a 
SET status='A'
WHERE id IN (1,2,3)

答案 2 :(得分:0)

您还可以使用此:

INSERT into table_a (id, status)
VALUES
    (1, 'A'),
    (2, 'B'),
    (3, 'C')
ON DUPLICATE KEY UPDATE
    status = VALUES(status);

答案 3 :(得分:0)

用例语句更新基于条件的值,例如“当id = 1时为case,当ID = 2时为'A',然后为'B',依此类推”。 例如 更新tab_a 在id = 1时设置status = case,然后在id = 2时设置'A',然后在id = 3时设置'B'然后'C'结束 (1,2,3)中的ID

如果要使用默认值1,2,3以外的其他值更新完整表 然后 更新tab_a 在id = 1时设置status = case,然后在id = 2时设置为“ A”,在id = 3时设置为“ B”,然后再设置“ C”,否则为“ Z”结束