![]() |
MySQL query
Hej,
Behöver hämta ut alla raderna från en tabell (SELECT * FROM table) och sedan till mitt problem: uppdatera _slumpmässigt_, _30% av raderna_. Någon som har någon idé hur denna query kan se ut i min php-fil. |
Citat:
Finns otaligt många sätt att utföra det på, ett förslag som dök upp i min hjärna innan lunchen hägrar är: 1. Hämta hem radernas ID och släng in i array 2. I PHP slumpar du fram 30% av dessa ID:n m.h.a array-rand() 3. Uppdatera dessa rader i mysql Slumpen i array-rand är säkert inte superhög, men är det inte viktigt med exakt slump fungerar detta bra :) |
Har ca 20 000 rader som jag hämtar från tabellen.
|
Skulle man kunna göra så här måntro?
$sql = mysql_query("SELECT id FROM table WHERE RAND() < 0.3 AND color='green' "); while ($row = mysql_fetch_array($sql)) { mysql_query("UPDATE newtable SET value='new_value' WHERE id='".$row[0]."' "); } |
Citat:
|
Kanske slippa involvera PHP mer än nödvändigt?
(Otestat men bör fungera i teorin) Kod:
UPDATE newtable, |
Ett alternativt svar till SvanteH (nästan identiska men ville bara visa en alternativ form):
I en tabell med 2 097 152 rader om du ska sätta samma värde till alla (annars kan du skriva en funktion som uppdaterar de); tar bara några sek så är alla uppdaterade med en query! Men säg att du ta bort 30% slumpmässiga rader och du har en kolumn som heter deleted: Kod:
UPDATE test AS org Fungerar ju på samma sätt såklart. Man kan även använda en switch-sats i queryn; värt att kolla in om du vill lära dig lite mer om det :) EDIT: Såg att det var ett lite sent svar så ber om ursäkt för det. Testa även att skriva explain före queryn så kan du jämföra olika typer av frågesatser. |
Alla tider är GMT +2. Klockan är nu 08:55. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson