如何通过一行更新MySQL中的多行?

时间:2016-07-09 16:45:14

标签: mysql

我有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表(从数组中应用我的数据)没有循环并更新每一行?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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);