我想知道如何使用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
}
答案 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)
答案 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 Female
和Female to Male
来更正这些问题。
所以这是你的代码:
UPDATE Person
SET Gender= CASE
WHEN gender= 'Male' THEN 'Female'
WHEN gender= 'Female' THEN 'Male'
ELSE gender
END