我可以更新不插入,具有不同条件的一行的多个值吗?

我需要更新我的表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 次,这可能吗?我可以在一个查询中完成吗?


临摹微笑
浏览 146回答 1
1回答

互换的青春

您可以使用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."'";
打开App,查看更多内容
随时随地看视频慕课网APP