日期:2014-05-17  浏览次数:20532 次

多表联合查询,一表中值不存在用空代替
A表:号码
B表:号码,状态,注册时间,备注
C表:号码,进入时间记录(一个号码多条记录)

原语句
select distinct(a.号码),b.状态,(b.注册时间)RegDate,max(c.进入时间记录) LastDate,b.备注 from A表 a,B表 b,C表 c where a.号码=b.号码 and a.号码=c.号码 group by a.号码,b.状态,b.注册时间,b.备注 order by LastDate desc

这种会造成若C表没记录就不输出,
现改成ABC表联合查询,条件是号码相等,查处号码、状态、最近的时间记录(如果不存在就用NULL代替)。

先谢谢大神了~

------解决方案--------------------
改成这样试试,原来你用的是内连接,现在最后加了一个left join就可以实现:

select distinct(a.号码),b.状态,(b.注册时间)RegDate,max(c.进入时间记录) LastDate,b.备注 
from A表 a
inner join B表 b
        on a.号码=b.号码
left join C表 c
       on a.号码=c.号码 
group by a.号码,b.状态,b.注册时间,b.备注 
order by LastDate desc