Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta aleatoria

Estas en el tema de Consulta aleatoria en el foro de Mysql en Foros del Web. Hola: Estoy interesado en realizar una consulta SQL tal que me devuelva de todos los registros que cumplan alguna condición, uno de manera aleatoria. Algo ...
  #1 (permalink)  
Antiguo 20/03/2008, 12:09
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 1 mes
Puntos: 7
Consulta aleatoria

Hola:
Estoy interesado en realizar una consulta SQL tal que me devuelva de todos los registros que cumplan alguna condición, uno de manera aleatoria.
Algo así como:
Código:
SELECT * FROM tabla WHERE condicion LIKE 'lo_que_sea' LIMIT 1
Pero que ademas el resultado sea aleatorio.
¿Se puede hacer?
¿Cómo?

Un saludo!
  #2 (permalink)  
Antiguo 20/03/2008, 18:00
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
De acuerdo Re: Consulta aleatoria

Saludos

Podrias realizarlo de la siguiente manera:

Cita:
SELECT * FROM tabla WHERE condicion LIKE 'lo_que_sea' ORDER BY rand() LIMIT 1

Hasta Pronto!!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 20/03/2008, 19:21
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 1 mes
Puntos: 7
Re: Consulta aleatoria

La idea es basicamente esa, pero...
¿la función rand() se puede meter a saco de esa manera?

Además, yo necesito que el número aleatorio sea un entero menor o igual que el número total de elementos que cumplan dicha condición...
  #4 (permalink)  
Antiguo 28/03/2008, 08:43
isra00
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Re: Consulta aleatoria

Puedes "jugar" con la función random multiplicándola por el valor máximo-1 y sumándole el mínimo, ya que esta función genera un número entre 0 y 1. Por ejemplo, para generar un número aleatorio entero entre 1 y 5:

Código:
SELECT ROUND(RAND()*4+1,0)
También puedes evaluar con condiciones el número aleatorio. Por ejemplo, si queremos un número aleatorio entre 1 y 5 pero distinto a 3, podemos asignar a una variable el valor aleatorio, mediante una subconsulta:

Código:
SELECT valor.v FROM (SELECT ROUND(RAND()*4+1,0) AS v) AS valor WHERE v != 3;
Lo malo de esta consulta es que si el valor aleatorio es 3, no buscará otro, sino que devolverá vacía la consulta.

Espero que te sirva, aunque si te soy sincero no entiendo para qué lo quieres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:23.