SQL问题:合并2个查询结果为一个

大佬们好,新手请教:
想把第二个查询的值加入到第一个查询里(相同日期的),没有的是0

第一个查询:

SELECT
date(visitdate) as days,
count(*) as total  
FROM visitor 
GROUP BY date(visitdate)  
ORDER BY days ASC

图片说明

第二个查询:

SELECT date(askdate),count(*) as total2
FROM asknewuser
group by date(askdate)
order by date(askdate) asc

图片说明

想要的结果:

图片说明

SELECT t1.days,t1.total,IFNULL(t2.total2,0)
FROM
(
    SELECT
    DATE(visitdate) AS days,
    COUNT(*) AS total  
    FROM visitor 
    GROUP BY DATE(visitdate)    
)t1
LEFT JOIN 
(
    SELECT DATE(askdate) AS days,COUNT(*) AS total2
    FROM asknewuser
    GROUP BY DATE(askdate)
    ORDER BY DATE(askdate) ASC
)t2
ON t1.days=t2.days
ORDER BY t1.days ASC

上面的IFNULL函数是mysql的,如果是oracle,换成NVL

用union连接两个查询

select days, sum(count) from ((SELECT
date(visitdate) as days,
count(*) as total  
FROM visitor 
GROUP BY date(visitdate)  
ORDER BY days ASC) UNION
(SELECT date(askdate),count(*) as total
FROM asknewuser
group by date(askdate)
order by date(askdate) asc)) group by days

给你个最优的执行计划

select  
p.days,
sum(total) total1,
sum(total2) total2
from
(
select date(visitdate) days,1 total,0 total2 from visitor
union all
select date(visitdate) days,0 total,1 total2 from asknewuser) p
group by p.days
order by p.days;