すべての月を含むテーブルを作成し、それをクエリと結合したままにします。の線に沿って
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
それは一種の仕事ですが、それはあなたに1月から12月までの結果を返し、あなたに何年も与えません。以前に同様の質問がありましたが、非常に複雑なクエリを思いついたので、もっと簡単なものが見つからない場合は、調べてみてください: