sql >> Databasteknik >  >> RDS >> Mysql

Är det möjligt att uppdatera flera rader samtidigt med Zend_Db_Table?

Det du frågar görs inte ofta, eftersom du vanligtvis skulle använda update() att antingen ställa in många poster för att ha samma värden eller ställa in en post för att ha många olika värden.

Ett sätt att komma runt detta är att samla uppdateringarna, så använd din array och hämta alla ID där året är 2011 och kör sedan detta:

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

Om du gör detta kommer att minska antalet frågor förutsatt att du har många rader med samma år. Dokumentationen för detta finns här .

Eller så kan du använda en metod så här

Redigera efter OP-svar

Problemets natur innebär att det inte kan lösas effektivt.

Du ber om ett sätt att uppdatera 3 700 rader med data med mycket olika uppsättningar data. Om uppsättningarna av data är olika så finns det inget mönster som du kan utnyttja för att göra detta effektivt. Att hitta mönster, som rader med samma årtal, och använda dem till din fördel kommer att öka hastigheten på frågan men kommer att kräva viss hjärnans engagemang i form av array mashing som noterats av regilero.



  1. Hur man optimerar en ORDER BY för en beräknad kolumn på en MASSIV MySQL-tabell

  2. vad är den bästa metoden för att göra obegränsade underkategorier

  3. Hur får jag alembic att avge anpassad DDL på after_create?

  4. Konvertera Oracle SQL Select till PostgreSQL select