【发布时间】:2010-07-15 23:59:35
【问题描述】:
这基本上是Update multiple rows with one query? 的扩展。我希望能够一次更新多行的多列,但不一定要更新每一行的每一列。
这是我希望能够执行的示例命令:
UPDATE person
SET name = CASE id
WHEN 1 THEN 'Jim'
WHEN 3 THEN 'Precious'
END,
sex = CASE id
WHEN 1 THEN 'female'
WHEN 2 THEN 'male'
END
WHERE id IN (1,2,3)
但是这会返回一个错误,告诉我列“名称”不能为空。所以在我看来,指定 WHERE id IN (x,y,z) 意味着必须更新所有选定的列,即使我们根据具体情况指明要放置哪些值。
有没有办法绕过这个限制,比如一个特殊的符号来表示“保持原始值”?如果没有,是否有其他方法可以在一个查询中更新选择、多行的任意列?
【问题讨论】: