多表联合查询,一表中值不存在用空代替
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