MySQL包含空的WEEKS数据为0

时间:2018-10-31 05:43:13

标签: mysql sql

有没有办法从空结果中包括空周值?或如何合并空缺的几周

我的查询内容有点

SELECT 
    o.user_id , WEEK(FROM_UNIXTIME(o.cdate, '%Y-%m-%d'),7) as week_number,
FROM 
    (_orders AS `o`) 
WHERE 
    o.cdate BETWEEN '1505409460' AND '1540815218'
GROUP BY 
    week_number

结果

1
2
4
6
8

请求的结果

1
2
3
4
5
6
7
8

1 个答案:

答案 0 :(得分:0)

这只是一个例子,有很多方法可以实现。第一步是拥有或生成整数集。拥有这些表格实际上非常方便。在这里,我使用2个子查询交叉连接以生成100行(n = 0到99)

select
   ns.n, sq.*
from (
        select
           d1.digit + (d10.digit*10) as n
        from (
              SELECT 0 AS digit UNION ALL
              SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL  
              SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL 
              SELECT 9
              ) d1
        cross join (
              SELECT 0 AS digit UNION ALL
              SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL  
              SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL 
              SELECT 9
            ) d10
    ) ns
left join (

    your query goes here

    ) sq on ns.n = sq.week_number
where n between 1 and 52
order by n