【发布时间】:2017-03-08 16:06:19
【问题描述】:
我想根据另一列的值更新一列。 像这样的东西:
update mt
set
case
when mt.type = 1 (1=float 2=boolean 3=datetime 4=character)
then mt.float_value = mt.value
end
case
when mt.type = 2 (1=float 2=boolean 3=datetime 4=character)
then mt.boolean_value = mt.value
end
case
when mt.type = 3 (1=float 2=boolean 3=datetime 4=character)
then mt.datetime_value = mt.value
end
...
from myTable mt
我想根据 mt.type 列的值更新列 mt.float_value 或 mt.boolean_value 或 mt.datetime_value 或 mt.char_value
if the column mt.type = 1 then update mt.float_value with mt.value
if the column mt.boolean_value = 2 then update mt.float_value with mt.value
等等…… 这可能吗?我该如何执行此更新? 感谢您的帮助
【问题讨论】:
-
当您只填充表的每一行中的许多列中的一个时,您应该询问架构是否合适。例如,如果您想存储键/值对,其中值可以是任何数据类型,那么为每种数据类型使用单独的表可能比使用包含所有可能数据类型的列的单个宽表更有意义。触发器可用于确保给定键不具有各种数据类型的多个值。另外:您的查询缺少
where子句也很奇怪。