generate_series () equivalente no MySQL

Eu preciso fazer uma consulta e participar de todos os dias do ano, mas no meu database não há uma tabela de calendar.
Após o google-ing, encontrei o generate_series() no PostgreSQL. O MySQL tem algo parecido?

Minha mesa real tem algo como:

 date qty 1-1-11 3 1-1-11 4 4-1-11 2 6-1-11 5 

Mas minha consulta tem que retornar:

 1-1-11 7 2-1-11 0 3-1-11 0 4-1-11 2 and so on .. 

É assim que eu faço. Cria um intervalo de datas de 2011-01-01 a 2011-12-31 :

 select date_format( adddate('2011-1-1', @num:=@num+1), '%Y-%m-%d' ) date from any_table, (select @num:=-1) num limit 365 -- use limit 366 for leap years if you're putting this in production 

O único requisito é que o número de linhas em qualquer_tabela seja maior ou igual ao tamanho do intervalo necessário (> = 365 linhas neste exemplo). Você provavelmente usará isso como uma subconsulta de toda a consulta, portanto, no seu caso, any_table pode ser uma das tabelas usadas nessa consulta.

Versão aprimorada da solução da @Karolis que garante que funciona para qualquer ano (incluindo anos bissextos):

 selecione a data de (
     selecione
         Formato de data(
         adddate ('2011-1-1', @num: = @ num + 1),
         '% Y-% m-% d'
     ) encontro
     a partir de
         any_table,
     (selecione @num: = - 1) num
     limite
         366
 ) como dt
 onde ano (data) = 2011

Eu estava olhando para esta solução, mas sem a data “codificada”, e eu cheguei com este válido para o ano corrente (ajudado por essas respostas ). Por favor, note o

 where year(date)=2011 

não é necessário já que o select já filtra a data. Além disso, não importa qual tabela (pelo menos conforme declarado antes da tabela ter pelo menos 366 linhas), a data é “calculada” em tempo de execução.

  select date from ( select date_format( adddate(MAKEDATE(year(now()),1), @num:=@num+1), '%Y-%m-%d' ) date from your_table, (select @num:=-1) num limit 366 ) as dt