Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il possible de mettre à jour plusieurs lignes à la fois en utilisant Zend_Db_Table ?

Ce que vous demandez n'est pas souvent fait, car vous utiliseriez généralement update() soit de définir un grand nombre d'enregistrements pour qu'ils aient les mêmes valeurs, soit de définir un enregistrement pour qu'il ait plusieurs valeurs différentes.

Une solution consiste à regrouper les mises à jour, donc en utilisant votre tableau, obtenez tous les identifiants où l'année est 2011, puis exécutez ceci :

 $where = array();

 // This where should contain all the ids that need the year set to 2011
 // E.g.
 $where[] = array("id" => 3);

 $db->update("table_name", array("year" => 2011), $where);

Cela réduira le nombre de requêtes en supposant que vous avez de nombreuses lignes avec la même année. La documentation pour cela est ici .

Ou vous pouvez utiliser une méthode comme ceci

Modifier après la réponse de l'OP

La nature même du problème signifie qu'il ne peut pas être résolu efficacement.

Vous demandez un moyen de mettre à jour 3 700 lignes de données avec des ensembles de données très différents. Si les ensembles de données sont différents, il n'y a pas de modèle que vous pouvez exploiter pour rendre cela efficace. Trouver des modèles, comme des lignes avec la même année, et les utiliser à votre avantage augmentera la vitesse de la requête, mais nécessitera un certain effort cérébral sous la forme de array mashing comme noté par regilero.