I have currently three queries that I'm running to find three counts. They are supposed to be counting messages that are old, for today and for the future. I am wondering if there is a way to do the same thing in one query. Here are the queries:

SELECT COUNT(*) FROM messages WHERE userId = 1 AND show_date < today
SELECT COUNT(*) FROM messages WHERE userId = 1 AND show_date = today
SELECT COUNT(*) FROM messages WHERE userId = 1 AND show_date > today

*today is to represent today's date only, not literally in the query.

I know I could group by the show_date and filter the results outside of MySQL, but I wanted to know if there was a better way.