共计 671 个字符,预计需要花费 2 分钟才能阅读完成。
1.前言
目前就DBMS而言,Mysql依然盛行,下图展示了今月排名,还是具有一定可信度的
本文就Mysql讲解如何查询不存在的数据—-造假!
2.如何造假
业务中需求满天飞,通常会出现查询报表,数据库有几天是没数据的,但是这几天要返回。乍一听,这不造假吗??!熟悉关系型数据库的童鞋都明白,无论你怎么关联都拿不到这几天数据行,毕竟任何一张表都没有这几行数据,这时候,不要慌。Mysql的公共表达式派上用场了,
A common table expression (CTE) is a named temporary result set that exists within the scope of a single statement and that can be referred to later within that statement, possibly multiple times.
废话少说,
with recursive cte as (
select date(date_sub(now(),interval dayofmonth(now()) -1 day)) as start_time
union all
select date_add(start_time,interval 1 day ) from cte where start_time < last_day(now())
)
select * from cte;
OK了,一个月的日期已经成为了一张临时表了
接下来我们只需要和业务表做个左关联或者右关联就完事了
3.小结
Mysql的公共表达式使用场景局限,但是也有着一席用武之地,了解更多可以官网阅读。每日一水,你水了吗~~
正文完