1

我想知道如何使用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');

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

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

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

3 回答 3

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

}
}
于 2013-07-27T03:56:36.090 回答
1

您可以在 indise 更新时使用案例..

例如:

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)

请参考this和this了解更多信息。

于 2013-07-27T03:59:15.587 回答
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 Female和来纠正它们Female to Male

所以这是你的代码:

UPDATE Person 
    SET Gender= CASE
        WHEN gender= 'Male' THEN 'Female' 
        WHEN gender= 'Female' THEN 'Male' 
        ELSE gender 
    END
于 2018-05-01T08:04:47.153 回答