Hi,
in MySQL selektiere ich Datensätze und möchte aus dieser Menge zufällig einen auslesen.
SELECT
ort1.id ORT
...
FROM daten trm1
,orte ort1
WHERE trm1.owner_id = 1
AND trm1.emb_object IS NOT NULL
AND trm1.emb_object > ' '
AND trm1.intern_kz = 0
AND trm1.tag >= CURDATE()
AND ort1.id = trm1.ort_id
ORDER BY RAND() LIMIT 1
Du wirst ggf. noch ein anderes Problem bekommen: deine Query ist potentiell recht langsam.
Das liegt daran, dass du deine Ergebnismenge komplett berechnen musst, dann komplett (de-)sortieren um dann genau einen Datensatz zu selektieren.
Wenn du weißt, dass keine Lücken in deinen IDs existieren, dann könntest du anhand einer Gleichverteilung darüber eine zufällige ID im Bereich {id\_min, ..., id\_max} selektieren und dann den kompletten Datensatz aus der DB abholen. Wenn es nur wenige Lücken gibt, dann könntest du beim Auftreffen einer Lücke einfach nochmal eine Zufallszahl ziehen, wenn es mehr Lücken werden, wird das aber auch langsam weil du dann viele misses bekommst.
Gibt noch ein paar Möglichkeiten mehr (z.B. nur IDs selektieren, PHP's rand() verwenden und dann mit der ID den ganzen Datensatz holen), aber man findet dazu einiges bei google.
Bis die Tage,
Matti
--
[Webapplikationen in C++ entwickeln](http://tntnet.org/)