2010-09-12 2 views
0

Si je devais traduire ma table MySQL en PHP, il pourrait ressembler à ceci:Sélectionnez la valeur d'un champ dans un autre sur la même table MySQL de la même ligne?

$table = array(); 
$table[0] = array ('id'=>0, 'f1'=>0, 'f2'=>1); 
$table[1] = array ('id'=>1, 'f1'=>0, 'f2'=>2); 
// etc... 

Dans ce cas, je veux faire quelque chose comme ceci:

foreach($table as $row) { 
    $row['f1'] = $row['f2']; 
} 

Est-il possible de le faire avec une seule instruction MySQL en utilisant select et update?

J'imaginais quelque chose comme ceci:

update myTable set f1=(select f2 from myTable where id=id); 

Sauf que je ne pense pas que ça marcherait ... Je ne sais pas comment dire où id dans la deuxième instruction est égale à l'ID dans la première déclaration. Ou comment l'appliquer à toutes les lignes de la table.

Comment est-ce que je pourrais faire ceci?

Répondre

4

En fait, pour mettre à jour les valeurs f1 être les mêmes que ceux f2 vous utiliseriez:

UPDATE mytable 
    SET f1 = f2 

Si vous ne spécifiez pas de clause WHERE, la requête s'appliquera à toutes les lignes.

2

Juste

UPDATE myTable SET f1 = f2 

l'expression à droite de la = est en termes de colonnes existantes de la même ligne (on le fait souvent, par exemple, SET col = col + 1 ... il ne doit pas être autres colonnes , bien qu'il peut). L'absence d'une clause WHERE signifie que la mise à jour se produira sur toutes les lignes, comme vous le souhaitez.

Questions connexes