Mysql sql如何按条件添加值并放入特定列
这是表和表中的数据 表: 我需要有以下数据的表格 期望结果:Mysql sql如何按条件添加值并放入特定列,mysql,sql,Mysql,Sql,这是表和表中的数据 表: 我需要有以下数据的表格 期望结果: 是否要将总值放在最后一个非零列中 select id, value_total, (case when value_2 = 0 and value_3 = 0 and value_4 = 0 and value_1 > 0 then value_total else 0 end) as value_1, (case when value_3 = 0 and v
是否要将总值放在最后一个非零列中
select id, value_total,
(case when value_2 = 0 and value_3 = 0 and value_4 = 0 and value_1 > 0
then value_total else 0
end) as value_1,
(case when value_3 = 0 and value_4 = 0 and value_2 > 0
then value_total else 0
end) as value_2,
(case when value_4 = 0 and value_3 > 0
then value_total else 0
end) as value_3,
(case when value_4 > 0 then value_total else 0 end)
from t;
这个场景有很多种方法,下面提到了其中一种,请看一看
UPDATE TABLE
SET value_1 = 0
,value_2 = CASE
WHEN id = 3
THEN 300
ELSE 0
END
,value_3 = CASE
WHEN id = 2
THEN 200
ELSE 0
END
,value_4 = CASE
WHEN id = 1
THEN 100
WHEN id = 4
THEN 400
ELSE 0
END
你怎么知道该值应该放在哪一列?你能解释一下吗。该值将放在不是0的列和最后一列…是的,但是如果我的值是动态的,该怎么做?例如,它取决于输入。。。我想你又改变了你的问题。您从未提到列是动态的,或者有8个不同的值列。但是,如果是这样的话,您可以将上面发布的代码重新写入列值_8。@azizi。那么你会有一个不同的问题。这回答了您在这里提出的问题。如果你有一个不同的问题,把它当作一个新问题来问。
select id, value_total,
(case when value_2 = 0 and value_3 = 0 and value_4 = 0 and value_1 > 0
then value_total else 0
end) as value_1,
(case when value_3 = 0 and value_4 = 0 and value_2 > 0
then value_total else 0
end) as value_2,
(case when value_4 = 0 and value_3 > 0
then value_total else 0
end) as value_3,
(case when value_4 > 0 then value_total else 0 end)
from t;
UPDATE TABLE
SET value_1 = 0
,value_2 = CASE
WHEN id = 3
THEN 300
ELSE 0
END
,value_3 = CASE
WHEN id = 2
THEN 200
ELSE 0
END
,value_4 = CASE
WHEN id = 1
THEN 100
WHEN id = 4
THEN 400
ELSE 0
END