/ / Agarre x cantidad de registros de MySQL y obtenga duplicados si no es suficiente - mysql

Capture x cantidad de registros de MySQL y obtenga duplicados si no es suficiente - mysql

No estoy realmente seguro de cómo hacer esto, pero es posible en una consulta obtener x cantidad de registros de una tabla y, si no se encuentra lo suficiente, solo se seleccionarán aleatoriamente los duplicados.

Tengo una tabla de fotos, digamos que tiene 5 registros, y quiero sacar 10 registros y ordenarlos al azar, así que tengo algo como:

SELECT * FROM TABLE
ORDER BY RAND()
LIMIT 10

Esto solo hará retroceder 5 al azar, porque eso es todo lo que tengo en la tabla. ¿Puedo decirle a MySQL, hey, si encuentras menos de 10, solo puedes obtener más al azar hasta que alcances ese número?

Cualquier ayuda apreciada!

Gracias

Respuestas

0 para la respuesta № 1

Esto lo hará:

select * from Table1
union all
select * from
(
select * from
(
select * from Table1 limit 10
union all
select * from Table1 limit 10
union all
select * from Table1 limit 10
union all
select * from Table1 limit 10
-- more unions...
) t2 order by rand()
) rand_ordered
limit 10

Unión de la tabla tantas veces como sea el número de registros necesarios (10 veces en este ejemplo) para que funcione con solo una fila en la tabla, ordene el resultado por rand() y añadirlo a tu mesa con otro union all.

Puede que esta no sea la solución con mejor rendimiento, pero lo hará.

Ejemplo aquí: SQLFIDDLE