+----+--------+----+
| id | number | lv |
+----+--------+----+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 1 | 2 |
| 4 | 2 | 2 |
| 5 | 3 | 2 |
| 6 | 1 | 3 |
| 7 | 2 | 3 |
| 8 | 3 | 3 |
+----+--------+----+
И есть три числовые переменные
$lv
$num
$kol
Необходимо сделать выборку.
$lv должно быть = lv из таблицы, а если такого $lv в таблице нет, то надо выбрать записи с максимальным значение lv (в нашем случае это три записи со значение lv==3)
Далее, в выбранных записях, Если $num > количество_записей_с_указанным_lv, то выбираем $kol случайных записей из уже выбранных, если же $num < количество_записей_с_указанным_lv, то выбираем $kol записей с number > $num в порядке очереди.Если выбирается меньше записей, чем $kol, то для недостающихся записей выборку производим по ($num > количество_записей_с_указанным_lv)
Как-то так...