Datensatz per Zufallszahl auswählen

Hallo,
bin immer noch sql-Neuling und möchte mal wieder was ausprobieren und komme nicht weiter:

Ich möchte mir einen per Zufallgenerator ermittelten Datensatz einer Tabelle anzeigen lassen.
Dazu habe ich per php-skript die Anzahl der Datensätze einer Tabelle, und aus dieser eine Zufallszahl ermittelt.
Mit dieser wollte ich mit

"SELECT * FROM „.$tabellenname.“ WHERE id= „.$zufall“;

den entsprechenden Datensatz anzeigen lassen.
Hat soweit auch geklappt, bis ich feststellen musste, das die ID`s durch gelöschte Datensätze nicht mehr „vollständig“ sind und die Nummerierung Lücken aufweist. Sprich: Wird eine Zufallzahl ermittelt, die der ID eines nicht mehr vorhandenen Datensatzes entspricht, bekomme ich kein Ergebnis.
Frage:
Kann ich die Datensatzzuweisung eventuell auch anders lösen, z. B. das die Datensätze durchgezählt werden, bis die ermittelte Zufallszahl erreicht ist?

Oder was gibt es sonst noch für Lösungsansätze?

Danke im voraus,
Jan

Hallo,

du könntest alle vorhanden ID’s von der Datenbank abfragen
die ID’s in ein Array schreiben
und dann mittels Zufallszahl einen Arrayindex aussuchen.

Oder du machst das einfach auf gut glück und versuchst halt ein paar mal, bis du einen Datensatz geladen hast :wink:

LG Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

bin immer noch sql-Neuling und möchte mal wieder was
ausprobieren und komme nicht weiter:

Ich möchte mir einen per Zufallgenerator ermittelten Datensatz
einer Tabelle anzeigen lassen.

Oder was gibt es sonst noch für Lösungsansätze?

Du benutzt ja sicher das Gute PostgreSQL, in dem geht das ganz einfach mit

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

und gut is.

Gruß,

Malte

Hallo,

Danke für die Antwort,

Du benutzt ja sicher das Gute PostgreSQL,

aber ich benutze mySQL.

in dem geht das ganz
einfach mit

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

und gut is.

die Syntax erschließt sich mir leider noch nicht ganz (wie gesagt bin sql-neuling).

Gruß,
Jan

Hi,

Du benutzt ja sicher das Gute PostgreSQL,

aber ich benutze mySQL.

oh. Naja, da gibt’s sowas auch.

in dem geht das ganz
einfach mit

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

und gut is.

die Syntax erschließt sich mir leider noch nicht ganz (wie
gesagt bin sql-neuling).

Okay, dann mal Schritt für Schritt und für MySQL:

-- Wähle alle Spalten aus Tabelle "table"
SELECT \* FROM table

-- Sortiere die Ergebnisse zufällig
ORDER BY RAND()

-- Liefere nur eine Zeile
LIMIT 1

Ganz leicht zu finden btw per Google mit den Suchbegriffen „select random row“.

Gruß,

Malte