下面两条sql语句,先执行第一条,查出来的结果复制到第二条sql语句中,就能出现7月4日到7月10日的日期,
第一条语句查询出来的结果集
select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1
可是把第一条sql语句直接放到第二条sql语句中,查询就错了,可能它把结果集当做字符串来处理,能把两条sql直接拼接在一起,查询的结果还是对的吗?
第一条sql
SELECT LEFT(REPEAT(" select 1 union all",-DATEDIFF('2017-07-04','2017-07-10')+1),
LENGTH(REPEAT(" select 1 union all",-DATEDIFF('2017-07-04','2017-07-10')+1))-LENGTH(" union all"))
对的日期
SELECT DATE_ADD('2017-07-04',INTERVAL @i:=@i+1 DAY) as date FROM (
select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1 union all select 1
) as tmp,(SELECT @i:= -1) t
错的日期
SELECT DATE_ADD('2017-07-04',INTERVAL @i:=@i+1 DAY) as date FROM (
SELECT LEFT(REPEAT(" select 1 union all",-DATEDIFF('2017-07-04','2017-07-10')+1),
LENGTH(REPEAT(" select 1 union all",-DATEDIFF('2017-07-04','2017-07-10')+1))-LENGTH(" union all"))
) as tmp,(SELECT @i:= -1) t