[Mysql] RAND() probleem

Pagina: 1
Acties:

  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
Ik heb een probleem met de RAND() functie van mysql, deze gebruik ik in een query, maar hij geeft steeds hetzelfde resultaat terug! Er zitten meerdere resultaten in de resultset (3) dus ik heb niet maar 1 record ofzo in de tabel zitten, ook doet hij het in de mysql shell wel gewoon goed, ik krijg daar dus steeds andere resultaten.

Vaag is ook dat de query het een week geleden wel gewoon deed, ondertussen wel mysql geupdate, maar net de manual nog eens bekeken en hij zou het gewoon moeten doen!

Kan het zijn dat de query gecached wordt?

  • KorZijl
  • Registratie: December 2002
  • Laatst online: 30-11-2021

KorZijl

errare humanum est


  • whoami
  • Registratie: December 2000
  • Laatst online: 24-08 16:37
Je zult de randomizer nog moeten seeden.

In C++ bv. moet je eerst randomize() aanroepen om de randomizer te seeden, en daarna pas kan je random() gebruiken om een random getal te laten genereren.

https://fgheysels.github.io/


  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
ja maar wat ik het vage vind is dus dat de query waar het om gaat. Het gewoon prima deed!

$query = "SELECT banner_id, filenaam, bedrijf_id FROM banner WHERE verwijderd='nee' ORDER BY RAND()";

maar met een $random = rand(); en dan RAND($random) doet ie het ook, maar hij behoort het volgens de mysql ook gewoon zonder die $random te doen.. dat vind ik vaag

uit de mysql manual:
You can't use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. In MySQL Version 3.23, you can, however, do: SELECT * FROM table_name ORDER BY RAND() This is useful to get a random sample of a set SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000. Note that a RAND() in a WHERE clause will be re-evaluated every time the WHERE is executed. RAND() is not meant to be a perfect random generator, but instead a fast way to generate ad hoc random numbers that will be portable between platforms for the same MySQL version.

[ Voor 48% gewijzigd door Vuurvlieg op 28-01-2003 19:07 ]


  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Vuurvlieg schreef op 28 januari 2003 @ 19:06:
ja maar wat ik het vage vind is dus dat de query waar het om gaat. Het gewoon prima deed!
Misschien dat je provider MySQL heeft geupdate? Een seed is pas nodig sinds 3.23.52 ("RAND(NOW())").

[ Voor 4% gewijzigd door Erik Jan op 28-01-2003 19:11 ]

This can no longer be ignored.


  • Vuurvlieg
  • Registratie: Januari 2000
  • Laatst online: 05-06 15:09
kheb zelf mysql geupdate! dat is het dus! thnx!
Pagina: 1