gpt4 book ai didi

mysql - 更新表中包含特定值的所有字段

转载 作者:可可西里 更新时间:2023-11-01 07:56:13 25 4
gpt4 key购买 nike

我有一个包含 80 个字段的 MySQL 表,我想更新包含指定值的所有字段。例如,我想将带有 item1 的字段更新为值 0:

id_num    field1       field2   field3   field4   field5
1 item1 item2 item3 item4 item5
2 item3 item3 item3 item4 item5
3 item2 item1 item3 item4 item5
4 item5 item4 item3 item2 item1
5 item1 item1 item3 item4 item5
6 item2 item2 item4 item4 item5

结果应该是:

  id_num    field1     field2   field3   field4   field5
1 0 item2 item3 item4 item5
2 item3 item3 item3 item4 item5
3 item2 0 item3 item4 item5
4 item5 item4 item3 item2 0
5 0 0 item3 item4 item5
6 item2 item2 item4 item4 item5

我想用 MySQL 查询来完成。我遇到的问题是,如果有 80 个字段,我将不得不使用 80 个查询,例如:

update set field1=0 where field1=item1;
update set field2=0 where field2=item1;

等等,会很累的! :(

最佳答案

在很多语句中,你可以这样做。

UPDATE table 
SET field1 = '0'
WHERE field1 = 'item1';

UPDATE table
SET field2 = '0'
WHERE field2 = 'item1';

...

UPDATE table
SET fieldN = '0'
WHERE fieldN = 'item1';

在一条语句中,您可以这样做。

UPDATE table 
SET field1 = CASE WHEN field1 = 'item1'
THEN '0'
ELSE field1
END
, field2 = CASE WHEN field2 = 'item1'
THEN '0'
ELSE field2
END
...

, fieldN = CASE WHEN fieldN = 'item1'
THEN '0'
ELSE fieldN
END
;

不过,我认为这是另一个错误的问题,没有字面的答案是好的。

如果你需要这样一个循环,你的数据库设计可能是错误的。

列必须包含不同的值,而不是其他列之间的共享值。

更新:(一个 php 解决方案)此 PHP 脚本将遍历每个列名并对其应用查询。

<?php
$result = mysql_query("SHOW COLUMNS FROM table ");
while ($row = mysql_fetch_assoc($result)) {
mysql_query("UPDATE table SET ".$row['field']." = '0' WHERE ".$row['field']." = 'item1'");
}
?>

关于mysql - 更新表中包含特定值的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com