如果我将我的MySQL表格翻译成PHP,它可能看起来像这样:
$table = array();
$table[0] = array ('id'=>0, 'f1'=>0, 'f2'=>1);
$table[1] = array ('id'=>1, 'f1'=>0, 'f2'=>2);
// etc...
在这种情况下,我想做这样的事情:
foreach($table as $row) {
$row['f1'] = $row['f2'];
}
是否可以使用选择和更新的单个MySQL语句执行此操作?
我想象的是这样的事情:
update myTable set f1=(select f2 from myTable where id=id);
除非我认为不会起作用......我不知道怎么说第二个语句中的id等于第一个语句中的id。或者如何将其应用于表格中的所有行。
我怎么能这样做?
答案 0 :(得分:4)
实际上,要将f1值更新为与您使用的f2值相同:
UPDATE mytable
SET f1 = f2
如果未指定WHERE子句,则查询将应用于所有行。
答案 1 :(得分:2)
只需
UPDATE myTable SET f1 = f2
=
右侧的表达式是根据同一行的现有列(通常是一行,例如SET col = col + 1
...它不一定是其他列,虽然可以)。缺少WHERE
子句意味着更新将在所有行上发生,正如您所希望的那样。