Mysql更新多行数据集

时间:2013-07-27 03:49:26

标签: php mysql

我想知道如何使用UPDATE语句有效地更新多行数据。我知道我可以在下面插入多个这样的记录。

INSERT INTO example
  (example_id, name, value, other_value)
VALUES
  (100, 'Name 1', 'Value 1', 'Other 1'),
  (101, 'Name 2', 'Value 2', 'Other 2'),
  (102, 'Name 3', 'Value 3', 'Other 3'),
  (103, 'Name 4', 'Value 4', 'Other 4');

但是它如何在Update中工作,或者我是否必须循环查询并逐个更新?

目前我必须使用foreach来循环并更新每个SQL语句。

foreach() {
    // update statement....
    // and execute the query
}

3 个答案:

答案 0 :(得分:1)

  $data = array(
    array(
        100, 
        'Name 1',
        'Value 1', 
        'Other 1'
    ),
    array(
        101, 
        'Name 2', 
        'Value 2', 
        'Other 2',
    )
    array(
        102, 
        'Name 3', 
        'Value 3',
        'Other 3'
    )

for($i = 0; $i < count($data); $i++) {

for($j= 0; $j< count($data[$i]); $j++) {
    $field1 = $data[$i][$j];
    $field2 = $data[$i][$j];
    $filed3 = $data[$i][$j];
    $field4 = $data[$i][$j];
        query("UPDATE TABLE SET.... WHERE id = $field1");

}
}

答案 1 :(得分:1)

你可以在indise update时使用案例..

例如:

UPDATE users
    SET value = CASE 
        WHEN id in (1,4) THEN 53
        WHEN id = 2 THEN 65
        WHEN id in (3,5) THEN 47
    END
WHERE id IN (1,2,3,4,5)

有关详情,请参阅此sothis

答案 2 :(得分:0)

您也可以在 MYSQL 中使用 CASE

例如:

UPDATE example
    SET example_id = CASE 
        WHEN example_id=100 THEN 1000
        WHEN example_id=101 THEN 1001
        WHEN example_id=102 THEN 1002
        ELSE example_id*10
    END

您可以看到另一个示例,其中有一个表格Person并错误地输入了Gender。因此,您需要通过更新Male to FemaleFemale to Male来更正这些问题。

所以这是你的代码:

UPDATE Person 
    SET Gender= CASE
        WHEN gender= 'Male' THEN 'Female' 
        WHEN gender= 'Female' THEN 'Male' 
        ELSE gender 
    END