我有一个表,其中包含来自某类型业务的16,000多个记录。我正在查询该表以获取每个城市的记录,但是我只显示一次城市,以及该城市中存在业务的实例数。 “ 5号城市”(其中有5个城市是城市),但我重复看到某些城市,好像它们的名字不同,并且它们又重新出现故障了,但经过审查,它们并没有什么不同。
我已经检查了空格或缺少空格,并且无法弄清楚为什么查询认为某些企业实际上不是同一名称。有没有一种方法可以更具体地比较我?
输出示例:
Ft Collins #1 Ft Morgan #1 Ft Collins #87 Ft Garland #1 Ft Morgan #13
(注意柯林斯堡和摩根堡:这是复制和粘贴的内容)
这是代码:
$rscc = sQ("SELECT corsCity FROM corsf
ORDER BY corsCity ASC");
if(!$rscc) {
echo "Houston... we have a problem!";
}
else {
$rows = 0;
$totalcities = 0;
$totalrows = 0;
$lastcity = 'xxxx';
while($ccrow = mysqli_fetch_assoc($rscc)) {
$currentcity = $ccrow['corsCity'];
if ($lastcity != $currentcity) {
if ($lastcity != 'xxxx') {
$rows++;
$totalcities++;
echo "$lastcity #$rows <br>";
$rows = 0;
}
$lastcity = $currentcity;
$totalrows++;
}
else {
$rows++;
$totalrows++;
}
}
echo "Total cities = $totalcities <br>";
echo "Total businesses = $totalrows <br>";
}
$rscc->close();
顺便说一句,“ sQ”仅代表“ $connection->query
”。
答案 0 :(得分:0)
其中大部分可以在SQL中完成,而您只有一个简单的循环可以在PHP中完成。
使用GROUP BY
和Count()
获得每个城市的电话号码。使用WITH ROLLUP
计算总数(如果不是GROUP BY中有几列,则计算小计)
SELECT corsCity AS City, COUNT(*) AS Nbr
FROM corsf
GROUP BY corsCity WITH ROLLUP
ORDER BY corsCity
您的查询将返回:
City | Nbr
-------------------
Chicago | 8
Houston | 10
Los Angeles | 2
New York | 5
NULL | 25
如果城市为NULL
,则其所有业务的总数