Hola dezagus:
en realidad no hay un camino para hacer lo que quieres, pero se me ocurre por ejemplo que tú hagas una clasificación de los registros que quieres que aparezcan más... por ejemplo, si tienes 10 registros así:
Código MySQL:
Ver original+------+-------------+-----------+
| id | descripcion | prioridad |
+------+-------------+-----------+
| 1 | uno | 1 |
| 2 | dos | 1 |
| 3 | tres | 1 |
| 4 | cuatro | 1 |
| 5 | cinco | 1 |
| 6 | seis | 1 |
| 7 | siete | 1 |
| 8 | ocho | 2 |
| 9 | nueve | 2 |
| 10 | diez | 2 |
+------+-------------+-----------+
10 rows
in set (0.00 sec
)
es decir, te interesa que los registros marcados con prioridad 1 aparezcan más frecuentemente que los de prioridad 2, pero que el orden siga siendo aleatorio. Si quieres obtener tres registros por ejemplo, y te interesa que dos de ellos sean prioridad 1 y uno de ellos prioridad 2, no puedes hacer un simple ORDER BY RAND(), pues puede pasar esto:
Código MySQL:
Ver original+------+-------------+-----------+
| id | descripcion | prioridad |
+------+-------------+-----------+
| 8 | ocho | 2 |
| 7 | siete | 1 |
| 9 | nueve | 2 |
+------+-------------+-----------+
es decir, aquí aparecen tres registros al azar, pero dos de ellos tienen prioridad 2, sin embargo, puedes hacer uso de UNION's para diferenciar por las distintas prioridades, así:
Código MySQL:
Ver original+------+-------------+-----------+
| id | descripcion | prioridad |
+------+-------------+-----------+
| 1 | uno | 1 |
| 4 | cuatro | 1 |
| 9 | nueve | 2 |
+------+-------------+-----------+
De esta manera SIEMPRE OBTIENES DOS REGISTROS CON PRIORIDAD 1 y un registro con prioridad 2, pero el orden de los registros está dado por el azar.
Dale un vistazo para ver si te sirve esto.
Saludos
Leo.