如何使用 mysql 中多个 if 语句的输出更新列文本值?
How to update column text value with the output of multiple if statement in mysql?
例如,我的 table 结构就像 -
id (int, auto_increment),
value_1_isChecked (int),
value_1 (text),
value_2_isChecked (int),
value_2 (text),
value_3_isChecked (int),
value_3 (text),
extra_info (text),
interpretation (text)
所有值(value_1
、value_2
、value_3
)、它们的检查状态(以 0 或 1 的形式)、数据库中存在额外信息(30k 行) ). 我正在尝试的是更新 interpretation
单元格中的串联文本(我知道这不是正确的 mySql 格式,我只是在写为了更好地理解我的问题)-
variable result='<b>Selected Values :-</b><br>';
If(value_1_isChecked = 1) Then
result = result + "<b>[A]. </b>" + value_1 + "<br>";
End If;
If(value_2_isChecked = 1) Then
result = result + "<b>[B]. </b>" + value_2 + "<br>";
End If;
If(value_3_isChecked = 1) Then
result = result + "<b>[C]. </b>" + value_3 + "<br>";
End If;
If(extra_info Is NOT NULL) Then
result = result + "<br><b>Extra info :-</b><br>" + extra_info;
End If;
Update myTable set interpretation = result;
我无法使用 ELSEIF
,因为多个值的检查状态可能为真 (1)。
我知道,如何在 PHP 中实现这一点,但是更新数千(约 30K)行需要很长时间,这就是为什么我试图从 mySql 本身。但是我无法形成正确的查询。
希望这个例子对你有帮助
select
concat (
case v1 when '1' then concat('<b>','v1','</b>') else '' end,
case v2 when '1' then concat('<b>','v2','</b>') else '' end,
case v3 when '1' then concat('<b>','v3','</b>') else '' end
)
from table1
只需更新查询以满足您的需要,然后重写为 UPDATE
您可以像这样使用 case
语句:
UPDATE myTable
SET interpretation = CASE WHEN value_1_isChecked = 1 THEN concat('<b>','value_1','</b>')
WHEN value_2_isChecked = 1 THEN concat('<b>','value_2','</b>')
WHEN value_2_isChecked = 1 THEN concat('<b>','value_3','</b>')
WHEN extra_info Is NOT NULL THEN concat('<b>','extra_info','</b>')
ELSE ''
END;
例如,我的 table 结构就像 -
id (int, auto_increment),
value_1_isChecked (int),
value_1 (text),
value_2_isChecked (int),
value_2 (text),
value_3_isChecked (int),
value_3 (text),
extra_info (text),
interpretation (text)
所有值(value_1
、value_2
、value_3
)、它们的检查状态(以 0 或 1 的形式)、数据库中存在额外信息(30k 行) ). 我正在尝试的是更新 interpretation
单元格中的串联文本(我知道这不是正确的 mySql 格式,我只是在写为了更好地理解我的问题)-
variable result='<b>Selected Values :-</b><br>';
If(value_1_isChecked = 1) Then
result = result + "<b>[A]. </b>" + value_1 + "<br>";
End If;
If(value_2_isChecked = 1) Then
result = result + "<b>[B]. </b>" + value_2 + "<br>";
End If;
If(value_3_isChecked = 1) Then
result = result + "<b>[C]. </b>" + value_3 + "<br>";
End If;
If(extra_info Is NOT NULL) Then
result = result + "<br><b>Extra info :-</b><br>" + extra_info;
End If;
Update myTable set interpretation = result;
我无法使用 ELSEIF
,因为多个值的检查状态可能为真 (1)。
我知道,如何在 PHP 中实现这一点,但是更新数千(约 30K)行需要很长时间,这就是为什么我试图从 mySql 本身。但是我无法形成正确的查询。
希望这个例子对你有帮助
select
concat (
case v1 when '1' then concat('<b>','v1','</b>') else '' end,
case v2 when '1' then concat('<b>','v2','</b>') else '' end,
case v3 when '1' then concat('<b>','v3','</b>') else '' end
)
from table1
只需更新查询以满足您的需要,然后重写为 UPDATE
您可以像这样使用 case
语句:
UPDATE myTable
SET interpretation = CASE WHEN value_1_isChecked = 1 THEN concat('<b>','value_1','</b>')
WHEN value_2_isChecked = 1 THEN concat('<b>','value_2','</b>')
WHEN value_2_isChecked = 1 THEN concat('<b>','value_3','</b>')
WHEN extra_info Is NOT NULL THEN concat('<b>','extra_info','</b>')
ELSE ''
END;