yo,
zum einen ist dr tipp von henning schon mal sehr gut, was die semantik betrifft. falls du trotzdem immer noch eine solche lösung suchst, dann musst du über zwei abfragen oder einer unterabfrage gehen. aus performance gründen würd ich das in zwei abfragen machen.
die erste abfrage ermittelt den nächsten wert, falls es kenie entsprechnde plz gibt. das kannst du mit den aggregatfunktionen min() und max() machen, so ähnlch wie du es geschrieben hast. das noch mit einem limit kombiniert sollte dir jeweils einen wert zurückgeben.
mit der zweiten abfrage liest du nun alle datensätze ein, die dem wert der ersten abfrage entprechen. nun wählst du von davon wiederum einen zufälligen datensatz aus, entweder über mysql oder php.
Ilja