大佬们好,新手请教:
想把第二个查询的值加入到第一个查询里(相同日期的),没有的是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;