您的位置:首页 > 数据库 > MySQL

mysql获取从某个时间到今天的每一天的日期,以及笛卡尔积

2016-11-14 10:34 453 查看

1.要获得从指定日期到今天的每一天的日期

select date_format(assigned_date,’%Y-%m-%d’) assigned_date

from

(select adddate(‘2014-01-01’,t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) assigned_date

from

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3

) c

where assigned_date between ‘2016-07-01’ and NOW();

结果:







2.数据求笛卡尔积

比如你现在有一张这样的表:member_info



现在你需要根据时间和会员的注册渠道做一个笛卡尔积cross join,因为你需要每一天的时间和每一天的注册渠道作为一个主轴,来进行后续的工作。

那么你的SQL就是:

select a.assigned_date,b.regist_channel

FROM

(

select date_format(assigned_date,’%Y-%m-%d’) assigned_date

from

(select adddate(‘2014-01-01’,t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) assigned_date

from

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,

(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3

) c

where assigned_date between ‘2016-09-01’ and NOW()

)a

cross join

(

select member_id,regist_time,regist_channel from member_info

)b

3.关于left join

选定一张表作为主表来left join,那么这个主表里有的数据在结果中都会有,后面的每一张表都是相当于跟这个主表来left join。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 笛卡尔积
相关文章推荐