Skapa en tabell med alla månader, och sedan vänster gå med i den med din fråga. I linje med
select count(1) as count, months.month, year(published_at) as year
from months left join articles on months.month = month(published_at)
where published_at >= (now() - interval 1 year) and published_at <= now()
group by month(published_at)
order by year asc, month asc
Det kommer att fungera, men det kommer att ge dig resultat från jan till december, och kommer inte att ge dig år. En liknande fråga ställdes tidigare, sedan kom jag med en mycket komplex fråga, så om du inte hittar något enklare, överväg att ta en titt:
Frågeställningen mellan datum fungerar inte, nu är vi inne på ett nytt år