Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新查询更改多列中的值_Php_Sql - Fatal编程技术网

Php 更新查询更改多列中的值

Php 更新查询更改多列中的值,php,sql,Php,Sql,如何编写查询来更改有特定值的多列中的值?我想更新一个表:查看40列(q1-q40),如果该列中的值为-1,则将所有行的值更改为-999。我是否仍然需要为每一列列出案例,还是有更简单的方法 谢谢 您想使用update语句。以下是我们需要做的事情: UPDATE table_name SET q1 = -999, q2 = -999, q3= -999 etc..... q40 = -999 WHERE q1 = -1, q2 = -1, q3= -1 etc...... q40 = -1;

如何编写查询来更改有特定值的多列中的值?我想更新一个表:查看40列(q1-q40),如果该列中的值为-1,则将所有行的值更改为-999。我是否仍然需要为每一列列出案例,还是有更简单的方法


谢谢

您想使用update语句。以下是我们需要做的事情:

UPDATE table_name 
SET q1 = -999, q2 = -999, q3= -999 etc..... q40 = -999 
WHERE q1 = -1, q2 = -1, q3= -1 etc...... q40 = -1;

这将更新您需要的行,尽管这将是一件痛苦的事情。自从你澄清了你的问题,我就更新了。

你无法逃避冗长的方法

如果我能理解你的要求,我会想

UPDATE
  table
SET
  col00 = CASE WHEN col00 = -1 THEN -999 ELSE col00 END,
  col01 = CASE WHEN col01 = -1 THEN -999 ELSE col01 END,
  col02 = CASE WHEN col02 = -1 THEN -999 ELSE col02 END,
  ...
  col37 = CASE WHEN col37 = -1 THEN -999 ELSE col37 END,
  col38 = CASE WHEN col38 = -1 THEN -999 ELSE col38 END,
  col39 = CASE WHEN col39 = -1 THEN -999 ELSE col39 END
WHERE
  -1 IN (col00, col01, col02, ... col37, col38, col39)
或40个直接更新


这是一个很好的例子,说明编写SQL的代码何时是一种有用的方法。

您必须表达所有40列的逻辑。没有跨多个列概括表达式的语法。请修复您的数据结构!用数字区分多列通常是数据设计不佳的标志。您可能应该有另一个表,每个“实体”和每个“q”值对应一行。谢谢MatBailie和Gordon Linoff。我明白了,今晚我会看数据结构和设计视频。谢谢你的反馈!