registros - ¿Cómo seleccionar aleatoriamente las filas en SQL?
seleccionar registros aleatorios oracle (8)
Aquí hay una buena solución específica de Microsoft SQL Server 2005. Se ocupa del problema en el que está trabajando con un gran conjunto de resultados (no es la pregunta que sé).
Selección de filas al azar desde una tabla grande http://msdn.microsoft.com/en-us/library/cc441928.aspx
Estoy usando MSSQL Server 2005. En mi db, tengo una tabla "customerNames" que tiene dos columnas "Id" y "Name" y aprox. 1,000 resultados
Estoy creando una funcionalidad donde tengo que elegir 5 clientes al azar cada vez. ¿Alguien puede decirme cómo crear una consulta que obtendrá 5 filas al azar (Id y Name) cada vez que se ejecute la consulta?
En caso de que alguien quiera una solución PostgreSQL:
select id, name
from customer
order by random()
limit 5;
He encontrado que esto funciona mejor para big data.
`SELECT TOP 1 Column_Name FROM dbo.Table TABLESAMPLE(1 PERCENT);`
TABLESAMPLE(n ROWS) or TABLESAMPLE(n PERCENT)
es aleatorio, pero necesita agregar TOP n
para obtener el tamaño de muestra correcto.
Usar NEWID()
es muy lento en tablas grandes.
SELECCIONAR * FROM TABLENAME ORDER BY random () LIMIT 5;
Si tiene una tabla con millones de filas y se preocupa por el rendimiento, esta podría ser una mejor respuesta:
SELECT * FROM Table1
WHERE (ABS(CAST(
(BINARY_CHECKSUM
(keycol1, NEWID())) as int))
% 100) < 10
Tal vez link sea de ayuda.
Para aquellos que no quieren hacer clic:
SELECT TOP 1 column FROM table
ORDER BY NEWID()
SELECT TOP 5 Id, Name FROM customerNames
ORDER BY NEWID()
Dicho esto, todos parecen ir a esta página para obtener una respuesta más general a su pregunta:
link
Seleccione una fila al azar con MySQL:
SELECT column FROM table
ORDER BY RAND()
LIMIT 1
Seleccione una fila al azar con PostgreSQL:
SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1
Seleccione una fila al azar con Microsoft SQL Server:
SELECT TOP 1 column FROM table
ORDER BY NEWID()
Seleccione una fila aleatoria con IBM DB2
SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY
Seleccione un registro aleatorio con Oracle:
SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1
Seleccione una fila al azar con sqlite:
SELECT column FROM table
ORDER BY RANDOM() LIMIT 1
SELECT TOP 5 Id, Name FROM customerNames ORDER BY NEWID()