我有15列,12列(1月,2月,3月,...,12月)的表格,以填充我的表格,我应该知道要更新的列。
因为更新查询取决于用户条目,如果他输入1,我应该更新1月...所以...
我想知道是否可以这样做?
我有3个查询:
第三个表(1月,2月,3月,......)列
由于
答案 0 :(得分:1)
你得到的是一个糟糕的数据库设计。要采取的最佳方法是将这些列标准化为单个列,并使用附加列来指示月份。
但是,您可以控制使用case语句更新的列。
update
my_table
set
january_col = case when column_to_update = 1 then new_value else january_col end,
february_col = case when column_to_update = 2 then new_value else february_col end,
march_col = case when column_to_update = 3 then new_value else march_col end,
... etc
where
...
答案 1 :(得分:0)
假设我们有变量p_user_in中的用户输入和参数p_val中的期望值的过程。
我猜你也提供了一个主键值给过程(我把一列col1作为表的主键)和我们在p_prim_val中得到的这个值。
然后您可以使用以下更新语句相应地更新您的表 -
update table_name
set January = case when p_user_in = 1 then p_val else January end,
February = case when p_user_in = 2 then p_val else February end,
March = case when p_user_in = 3 then p_val else March end,
April = case when p_user_in = 4 then p_val else April end,
May = case when p_user_in = 5 then p_val else May end,
June = case when p_user_in = 6 then p_val else June end,
July = case when p_user_in = 7 then p_val else July end,
August = case when p_user_in = 8 then p_val else August end,
September = case when p_user_in = 9 then p_val else September end,
October = case when p_user_in = 10 then p_val else October end,
November = case when p_user_in = 11 then p_val else November end,
December = case when p_user_in = 12 then p_val else December end
where col1 = p_prim_val