2010-09-12 2 views
0

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

$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); 

Только я не думаю, что будет работать ... Я не знаю, как сказать, где идентификатор во втором заявлении равно ид в первое утверждение. Или как применить его ко всем строкам в таблице.

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

ответ

4

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

UPDATE mytable 
    SET f1 = f2 

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

2

Просто

UPDATE myTable SET f1 = f2 

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

Смежные вопросы