【问题标题】:How to update multiple rows in MySQL by one line?如何通过一行更新MySQL中的多行?
【发布时间】:2020-09-18 14:50:50
【问题描述】:

我有包含数据的 PHP 数组。 现在,我正在使用这样的循环:

$updArray = array(1=>11,2=>12,3=>13);
foreach($updArray as $id=>$value)
{
    $query = "UPDATE table1 SET column1='$value' WHERE cart_id = '$id'";
    mysql_query($query,$link);
}

我认为,如果数组包含数千行,它会很慢。 有没有办法更新 MySQL 表(从数组中应用我的数据)而无需循环并更新每一行?

【问题讨论】:

标签: mysql


【解决方案1】:

您可以尝试使用 CASE 语句构建单个更新,如下所示:

UPDATE table1
    SET column1 = CASE
        WHEN cart_id = 1 THEN 11
        WHEN cart_id = 2 THEN 12
        ...
        ELSE cart_id = cart_id
    END

【讨论】:

  • 没有。我有几千行,我不想写这么多。
  • @Piter 你不写。您的脚本将使用循环使用字符串和数组构建请求
【解决方案2】:
INSERT INTO students 
(id, score1, score2)
VALUES 
    (1, 5, 8),
    (2, 10, 8),
    (3, 8, 3),
    (4, 10, 7)
ON DUPLICATE KEY UPDATE 
    score1 = VALUES(score1),
score2 = VALUES(score2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多