繁体   English   中英

我可以在不同条件下为一行更新而不插入多个值吗? [重复]

[英]Can i UPDATE not insert, multiple values for one row with diferente conditions? [duplicate]

这个问题已经在这里有了答案:

我需要更新我的表document_Format ,有一个名为列NumVias ,并且该表有一个名为行CodFormatoCategoria 我所拥有的是:

'UPDATE document_Format
                SET NumVias = "'.$Campos['NumVias_Vendas'].'" 
                WHERE CodFormatoCategoria = "VEND" and CodEmpresa = "'.$CodEmpresa.'" '

我需要的是:

'UPDATE CodFormatoCategoria 
                SET NumVias = "'.$Campos['NumVias_Vendas'].'" 
                WHERE CodFormatoCategoria = "VEND",

                SET NumVias = "'.$Campos['NumVias_Compras'].'" 
                WHERE CodFormatoCategoria = "COMP",

                SET NumVias = "'.$Campos['NumVias_Diversos'].'" 
                WHERE CodFormatoCategoria = "DIV",

 and CodEmpresa = "'.$CodEmpresa.'" '

在不运行该功能3次的情况下可以吗? 我可以在一个查询中做到吗?

您可以使用CASE语句有条件地为该列选择一个值。 如果没有任何CASE WHEN语句匹配项,则可以设置ELSE语句以保留原始值,因此没有任何变化。

$sql = "UPDATE CodFormatoCategoria 
           SET NumVias = CASE WHEN CodFormatoCategoria = 'VEND' THEN '".$Campos['NumVias_Vendas']."' 
                              WHEN CodFormatoCategoria = 'COMP' THEN '".$Campos['NumVias_Compras']."' 
                              WHEN CodFormatoCategoria = 'DIV' THEN '".$Campos['NumVias_Diversos']."' 
                              ELSE NumVias 
                          END
            WHERE CodEmpresa = '".$CodEmpresa."'";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM