php - 如何在一个查询中更新多行

标签 php mysql sql

我知道这个问题在这些论坛上可能被问了太多次,但我真的找不到可靠的答案。他们都给出了不同的方法。

无论如何,我有这段代码可以更新一行:

$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1'";

是否可以在同一查询中更新多行?像这样:

$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1',
        UPDATE $userName SET P1 = '$p1TUE' WHERE day = 'TUE1',
        UPDATE $userName SET P1 = '$p1WED' WHERE day = 'WED1'";

或者,要在一个查询中更新多行,它们是否必须共享一个标识符?

谢谢。

编辑:评论中的建议似乎不起作用...

$sql = "UPDATE $userName SET P1 = '$p1MON' WHERE day = 'MON1';
        UPDATE $userName SET P1 = '$p1TUE' WHERE day = 'TUE1';
        UPDATE $userName SET P1 = '$p1WED' WHERE day = 'WED1'";

最佳答案

使用 case 表达式:

UPDATE $userName
SET P1 = case day
         when 'MON1' then '$p1MON'
         when 'TUE1' then '$p1TUE'
         when 'WED1' then '$p1WED'
         end
where day IN ('MON1', 'TUE1', 'WED1')

关于php - 如何在一个查询中更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271281/

相关文章:

php - 如何解决 Joomla 错误 "The template for this display is not available."

php - Cyber​​Source - 商家定义的数据

MySQL - 操作数应包含 1 列

MySQL - 行到列

mysql - 合并具有不同列的两个表mysql

mysql - 如何在 auto_increment 列中找到 "holes"?

php - Laravel 中的 AJAX 函数未将表单数据发布到 Controller

php - Phalcon/REST 到现有项目

php - 向时事通讯订阅者发送大量消息

php - 如何在 php 中删除具有复合(多列)主键的记录