我有一个巨大的MySql表正在生产中使用。我有一些表,这些表由地理区域命名,外键用于较小的分区。它的结构类似于db_country-> tbl_city1,tbl_city2,tbl_city3和每个tbl_city都有内部住户的行,其中包括街道,地址和每个家庭的人数等。
问题:如果我为每个按STREETS分组的家庭提取数据,我会得到正确数量的人,但当我拨打整个城市的人数时,我会得到一个略微膨胀的数字。我知道必须有一些我搞砸的事情,这种情况下可能的失败区域是什么?
产生膨胀输出的第一个查询是:
SELECT sum(people) AS people FROM city WHERE division=2136 AND status=1;
,产生正确输出的第二个查询是:
SELECT street.name, SUM(people) AS people FROM city INNER JOIN streets
ON city.street=streets.id WHERE division=2136 AND status=1
GROUP BY street.name;
图片是实际输出,上表显示总计(充气),而下图则显示具有正确数字的个别街道/村庄MYSQL OUTPUT IMAGE
答案 0 :(得分:2)
城市表中有记录没有与联接city.street=streets.id
匹配的相关街道记录
试试这个sql找出错过的记录。
Select city.* from city left join street on city.street=streets.id
WHERE division=2136 AND status=1 where street.id is null.