Hola G;
Tu propuesta es la correcta;
CREATE TEMPORARY TABLE tmp_table_name SELECT title, fecha FROM table_name
ORDER BY fecha DESC LIMIT 0,20;
SELECT * FROM tmp_table_name ORDER BY RAND();
DROP TABLE tmp_table_name;
A mi me resulta hacer un WHERE fecha between now() - interval 1 DAY and
NOW() si tengo tablas muy largas, y quiero los más recientes del mismo día.
Pero mis tablas son algo más grandes, supongo y no creo que te sea necesario
En una table con unos 60.000 entradas todo eso no tarda ni 0.00 sec
CREATE TEMPORARY TABLE tmp_table_name select null, title, time_open from
item order by time_open limit 0,20;
Query OK, 20 rows affected (0.00 sec)
Mit freundlichen Grüssen
Thomas Goik
--
Lofox GmbH
Geschäftsführerin: Evelyn Fuchs
Im Kamperholz 48
44805 Bochum - Germany
Amtsgericht Bochum HRB 7042
USt-IdNr.: DE215698227
St.-Nr. Bochum 306/5885/0172
> -----Mensaje original-----
> De: GN [mailto:gnarvaja@stripped]
> Enviado el: jueves, 16 de julio de 2009 15:54
> Para: mysql-es@stripped
> Asunto: Re: Rand por fecha
>
> Probá usando INSERT ... SELECT ... en una tabla temporaria:
>
> Si tu query original es SELECT col1_fecha, col2 FROM tabla ORDER BY
> col1_fecha DESC LIMIT 20 los pasos son:
>
> 1. Crea una tabla temporaria con columnas: col0, col1_fecha, col2.
> col0 va a tener la salida de RAND()
> 2. Agregás los valores a la tabla temporaria con: INSERT INTO
> tabla_temp (col0, col1_fecha, col2) SELECT rand(), t.col1_fecha,
> t.col2 FROM tabla t ORDER BY t.col1_fecha DESC LIMIT 20
> 3. Tu nuevo query lo hacés sobre la tabla temporaria: SELECT
> col1_fecha, col2 FROM tabla_temp ORDER BY col0
>
> Las tablas temporarias son locales para la conexión y desaparecen
> cuando te desconectás. Para un tabla tan chica, se crea en memoria
> solamente.
>
> Espero que te sirva. Atentamente,
> G
>
> 2009/7/16 Emiliano Horcada <emilianohorcada@stripped>:
> > Si, probé, y no funciona.
> >
> > 2009/7/16 16 minutos <16minutos@stripped>
> >
> >> Hola Emiliano,
> >> probaste
> >> ORDER BY Fecha DESC, rand() LIMIT 0, 20
> >> ?
> >> Un saludo,
> >> alejandro
> >>
> >> 2009/7/15 Emiliano Horcada <emilianohorcada@stripped>
> >>
> >> > Tengo en una tabla los campos: Titulo, Fecha. Y necesito obtener
> los 20
> >> > registros más nuevos, es decir que ORDER BY Fecha DESC LIMIT 0,
> 20Pero,
> >> > necesito que estos 20 registros se ordenen aleatoreamente. Se
> entiende?.
> >> > Existe una forma de hacer eso con la consulta?.
> >> >
> >>
> >
>
>
>
> --
> Time's fun when one has flies -- A friend of mine
> Lenny Bruce - "Communism is like one big phone company." -
> http://www.brainyquote.com/quotes/authors/l/lenny_bruce.html
>
> --
> Lista de Correos de MySQL
> Para el historial de la lista: http://lists.mysql.com/mysql-es
> Para cancelar inscripción: http://lists.mysql.com/mysql-
> es?unsub=technik@stripped