从同一行中的同一个MySQL表中选择一个字段的值到另一个字段?

时间:2010-09-12 04:57:56

标签: mysql select

如果我将我的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。或者如何将其应用于表格中的所有行。

我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

实际上,要将f1值更新为与您使用的f2值相同:

UPDATE mytable
   SET f1 = f2

如果未指定WHERE子句,则查询将应用于所有行。

答案 1 :(得分:2)

只需

UPDATE myTable SET f1 = f2

=右侧的表达式是根据同一行的现有列(通常是一行,例如SET col = col + 1 ...它不一定是其他列,虽然可以)。缺少WHERE子句意味着更新将在所有行上发生,正如您所希望的那样。