Если бы мне пришлось переводить мою 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 с использованием select и update?
Я представлял себе что-то вроде этого:
update myTable set f1=(select f2 from myTable where id=id);
Кроме того, я не думаю, что это сработает... Я не уверен, как сказать, где id во втором выражении равен id в первом утверждении. Или как применить его ко всем строкам в таблице.
Как я могу это сделать?
На самом деле, чтобы обновить значения f1, чтобы они были такими же, как f2, которые вы использовали бы:
UPDATE mytable
SET f1 = f2
Если вы не укажете предложение WHERE, запрос будет применяться ко всем строкам.
Просто
UPDATE myTable SET f1 = f2
выражение справа от =
находится в терминах существующих столбцов одной и той же строки (часто бывает, например, SET col = col + 1
... это не должно быть ДРУГИЕ столбцы, хотя это возможно), Отсутствие предложения WHERE
означает, что обновление будет выполняться во всех строках, как вам кажется.