Выбрать значение одного поля в другое в той же таблице MySQL в той же строке?

0

Если бы мне пришлось переводить мою 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 в первом утверждении. Или как применить его ко всем строкам в таблице.

Как я могу это сделать?

Теги:
select

2 ответа

4
Лучший ответ

На самом деле, чтобы обновить значения f1, чтобы они были такими же, как f2, которые вы использовали бы:

UPDATE mytable
   SET f1 = f2

Если вы не укажете предложение WHERE, запрос будет применяться ко всем строкам.

2

Просто

UPDATE myTable SET f1 = f2

выражение справа от = находится в терминах существующих столбцов одной и той же строки (часто бывает, например, SET col = col + 1... это не должно быть ДРУГИЕ столбцы, хотя это возможно), Отсутствие предложения WHERE означает, что обновление будет выполняться во всех строках, как вам кажется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню