Duda consulta SQL

themaz

Hola, tengo una duda y quiero saber si se puede hacer mediante SQL.

Tengo una bdd con una tabla por ejemplo :

registro1 valor campo 1
registro2 valor campo 3
registro3 valor campo 1
registro4 valor campo 20
registro5 valor campo 20
registro6 valor campo 20
registro7 valor campo 20
registro8 valor campo 20
registro9 valor campo 20

Como podría hacer la consulta para que aleatoriamente, elija a 1, de los 3 primeros registros siempre que campo sea mayor que 0

Se me había ocurrido algo con la opción ORDER BY RAND() pero no me sale

¿Podéis ayudarme ?

Saludos

eXtreM3

A ver si me ha quedado claro.

SELECT * FROM tabla WHERE campo > 20 ORDER BY rand() LIMIT 0 , 1

En teoría con esta consulta, te va a pillar un registro aleatorio, y solamente uno (no la he probado)

Edit: mierda, he pasao por alto la parte de de los 3 primeros registros

Vale, ya. Pues habría que incluir buscar primero el número aleatorio de la consulta

$aleatorio = rand(1,3)

Esto te devuelve 1, 2 ó 3, ahora hacemos el LIMIT

$min = $aleatorio - 1;
$max = $aleatorio;

Y ahora lo ponemos en la consulta de arriba sin el order by rand()

SELECT * FROM tabla WHERE campo > 20 LIMIT $min , $max
2 respuestas
BLZKZ

#2 campo > 20?

XDD

eXtreM3

xDDDDDDDDDDD

campo > 0 obviamente, se me fue xD

themaz

#2 gracias, era mas o menos lo que buscaba =)

LOc0
select * from tabla where campo > 0 limit FLOOR(rand(unix_timestamp())*3), 1;

salu2 ;)

Usuarios habituales

  • LOc0
  • themaz
  • eXtreM3
  • BLZKZ