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

seleccionar un registro aleatoriamente en sql server

Estas en el tema de seleccionar un registro aleatoriamente en sql server en el foro de Bases de Datos General en Foros del Web. Hola amigos necesito hacer lo siguiente: Tengo una tabla de "participantes" a un concurso especifico. Necesito sacar al ganador del concurso, por lo cual tengo ...
  #1 (permalink)  
Antiguo 01/07/2005, 10:56
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 20 años
Puntos: 0
seleccionar un registro aleatoriamente en sql server

Hola amigos necesito hacer lo siguiente:

Tengo una tabla de "participantes" a un concurso especifico.
Necesito sacar al ganador del concurso, por lo cual tengo que seleccionar entre todos los registros uno al azar. Se que existe la funcion rand(), pero no se como implementarla, la tabla tiene un campo "id" que es un int autoincrementable, este me puede servir creo

Espero sus sugerencias para resolver esto

Un saludo p4blo.-
__________________
Pablod:-)
  #2 (permalink)  
Antiguo 01/07/2005, 15:47
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
No sé si funcionará en el sql server, pero en mysql sí:

SELECT * FROM participantes ORDER BY rand() LIMIT 0,1;

En sql server no hay limit me parece que el equivalente es top:

SELECT TOP 1 * FROM participantes ORDER BY rand();

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 01/07/2005, 16:18
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
En SQL Server la función RAND no es precisamente útil, pues sus valores no son del todo aleatorios.

En su lugar una buena alternativa suele ser la funcion NEWID():

SELECT TOP 1 * FROM participantes ORDER BY NEWID();
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 03:00.