[opgelost]MYSQL: Random number with limits.
kevin vdm
07/01/2009 17:14:00ik heb nu deze mysql query:
Nu zit alles en database dat gerangschikt is van 1 tot 100(als vb).
als ik deze code uitvoer neemt hij automatisch de EERSTE 4 die voldoen aan de requirements.
Nu wil ik dat hij 4 willekeurige getallen neemt die voldoen aan de requirements.
Hoe doe ik dit?
Mvg, kevin
Code (php)
1
mysql_query("UPDATE `k` SET `f`='".$_POST['naam']."' WHERE `f`='' AND `o`='' AND `land`='".$data[land]."' AND `g_id`='1' ORDER BY `id` LIMIT 4");
Nu zit alles en database dat gerangschikt is van 1 tot 100(als vb).
als ik deze code uitvoer neemt hij automatisch de EERSTE 4 die voldoen aan de requirements.
Nu wil ik dat hij 4 willekeurige getallen neemt die voldoen aan de requirements.
Hoe doe ik dit?
Mvg, kevin
Gewijzigd op 01/01/1970 01:00:00 door Kevin vdm
PHP hulp
25/11/2024 04:19:35Joren de Wit
07/01/2009 17:19:00In een UPDATE query kun je geen ORDER BY gebruiken, dat zou ook erg onlogisch zijn. Met zo'n query update je de gegevens die voldoen aan jouw WHERE clausule (eventueel beperkt in aantal door de LIMIT).
Als je 4 random records wilt updaten zul je dus eerst het id van 4 random records moeten selecteren en dat vervolgens gebruiken in je update query. Dat kan overigens wel in 1 query en wel met een subquery:
Als je 4 random records wilt updaten zul je dus eerst het id van 4 random records moeten selecteren en dat vervolgens gebruiken in je update query. Dat kan overigens wel in 1 query en wel met een subquery:
kevin vdm
07/01/2009 17:30:00Joren de Wit
07/01/2009 17:39:00kevin schreef op 07.01.2009 17:30:
Neemt niet weg dat het erg onlogisch is om dat in een UPDATE query te zetten. Hoe weet jij dan precies welke records aan die ORDER BY voldoen en welke er wel of niet geupdate zijn?een order by werkt perfect bij mij als ik het in mysql gebruik.
Eddy E
07/01/2009 19:09:00Je zou toch alleen de 4 meest recente (nieuwste / nieuwste DATETIME) willen updaten? (ipv alles ná een bepaalde datetime)
Dan is een ORDER BY in combinatie met een LIMIT prima te doen ;).
Dan is een ORDER BY in combinatie met een LIMIT prima te doen ;).
Joren de Wit
07/01/2009 19:16:00Volgens de SQL standaard hoor je dat dan met een SELECT subquery in combinatie met IN() te doen. Een ORDER BY hoort imo gewoon niet thuis in een UPDATE query...