Tal como dice @James, ordenará todos los registros y luego obtendrá las primeras 20 filas.
Como es así, tiene la garantía de obtener los 20 primeros artículos publicados, los más nuevos no se mostrarán.
En su situación, recomiendo que se agrega desc
a order by publish_date
, si desea que los artículos más nuevos, a continuación, el artículo más reciente será la primera.
Si necesita mantener el resultado en orden ascendente, y todavía quiere los 10 artículos más recientes, puede pedirle a mysql que clasifique su resultado dos veces.
Esta consulta a continuación ordenará el resultado descendente y limitará el resultado a 10 (esa es la consulta dentro del paréntesis). Todavía se ordenará en orden descendente, y no estamos satisfechos con eso, por lo que le pedimos a mysql que lo ordene una vez más. Ahora tenemos el resultado más nuevo en la última fila.
select t.article
from
(select article, publish_date
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Si necesita todas las columnas, se hace de esta manera:
select t.*
from
(select *
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Utilizo esta técnica cuando escribo consultas manualmente para examinar la base de datos en busca de varias cosas. No lo he usado en un entorno de producción, pero ahora cuando lo marqué en el banco, la clasificación adicional no afecta el rendimiento.
publish_date
s son iguales, ordenar por ellos no da resultados determinados, lo que significa que si los usaLIMIT
para paginar, ¡puede terminar obteniendo los mismos artículos en diferentes páginas!