prendendo l'idea di Zerkms:
Select * FROM (
SELECT * FROM `articles`
WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
ORDER BY `views` DESC
LIMIT 20
) as reverse_article
ORDER BY views ASC
ti consentirà di eseguire il doppio ordinamento
-
Il più alto verrà scelto (selezione interna)
-
Il più basso verrà eliminato per primo.
TUTTAVIA
puoi anche invertire l'ordinamento tramite PHP ottenendo prima il tuo fetchALL ed eseguendo il conteggio all'indietro da count() (che è l'array di dimensioni massime) fino a 0 (che è la visualizzazione dell'array più alta)
fai la tua scelta