Randomdatensatz aus MySQL DB ziehen

Tach Community,

es geht um ein klassisches „Spruch des Tages“ Script.
Mein Problem:
ich lege mit min/max werten den Randombereich fest.
Der Maxwert ergibt sich aus der Anzahl der Datensaetze.
Das funktioniert solange toll, bis irgendwann mal zwischendrin
ein Datensatz geloescht wird. die IDs werden mit autoincrement vergeben. somit entsteht eine luecke. wenn das randomscript nun genau die id aus der luecke waehlt, gibts nen mySQL fehler.

nun die frage:
was ist sinnvoller, bzw. wie geht ihr vor:

  • PHP sollte die IDs vergeben. Wenn ein datensatz geloescht wird, sollte alles neu organisiert werden (ist glaub ich langsam)

  • autoincrement beibehalten… methode schreiben, die die datensaetze neu sortiert (tempoaere tabelle)

  • alles so lassen wie es ist… nur bei fehler (datensatz nicht vorhanden) naechsten datensatz nehmen.

  • oder…
    gibts da vielleicht was von ratiofarm/MySQL, womit man die Datensaetze automatisch neu sortieren kann.

Oder ist mein Konzept einfach gruetze? habt ihr ne schlauere idee?
wie waehle ich aus einer DB datensaetze zufaellig aus?

vielen dank fuer die konstruktiven vorschlaege :smile:

gruss

PixelKoenig

Hallo

Am einfachsten wäre wohl ein

SELECT \* FROM tabelle ORDER BY RAND() LIMIT 1

Dann ist die ID unwichtig. Das ist allerdings relativ aufwendig, da bei jedem Abruf für jeden Tabelleneintrag ein Zufallswert erzeugt werden muss.

Besser ist wohl die IDs anzupseen:

UPDATE tabelle SET id=id-1 WHERE id\>$geloeschte\_id; ALTER TABLE tabelle AUTO\_INCREMENT = (SELECT MAX(id) FROM tabelle)+1

Das ist natürlich auch aufwendig, aber muss auch nur selten durchgeführt werden.

Habe das allerdings nicht ausprobiert.

sigterm