Bạn sẽ cần tham gia vào một bảng khác có ít nhất 30 hàng để tạo bất kỳ ngày nào không tồn tại trong tập dữ liệu. Một cái gì đó như:
select * from(
select curdate() - interval @rn := @rn + 1 day as last_30_date
from table_with_at_least_30_rows
join (select @rn := -1) rows limit 30
) days
left join (select curdate() as data_date) d on last_30_date = data_date;
Thay thế select curdate() as data_date
với truy vấn của bạn.