数据库多表并查

  • 涉及多表并查的情况,我们先只讨论不用左右外连接等方式,而是通过结果集来取最后的数据。
select r.*, 
(select count(collector_id) from garbagecollector where left(collector_id,length("111111111")+3) = r.region_id) as collector_num,
(select count(household_id) from household where left(household_id,length("111111111")+3) = r.region_id) as household_num
from 
(select left(region_id,length("330681117")+3) as region_id, 
count(region_id) as region_num from region where 
length(region_id) = 12 and 
left(region_id,length("111111111")) = "111111111"
group by left(region_id,length("111111111")+3)) r

拿这个sql举例,这个涉及三表查询,这三者之间的联系是互相的主键有关联。然后这边笔者把其中一个表作为底层结果集,然后限制好条件,其他的作为一个查询结果出现在该结果集外层的结果集当中。
当然,三表查询或者多表查询,如果涉及的数据量比较多,不建议采用多表查询的方式。应该要考虑到相关性能处理。这边笔者只是单纯作为一个sql来说,多表查询可以这么来取。
先把一个当做结果集,然后找表之间的联系。然后作为结果集出现在查询结果处。

你可能感兴趣的:(数据库)