我有一个表,其中包含来自某种类型业务的 16,000 多条记录。 我正在查询该表以获取每个城市的文件,但我只显示一次城市以及该城市中存在业务的实例数。 "城市#5"(城市有五个这样的企业(,但我重复某些城市,好像他们的名字不同,他们回来了,但经过审查,他们没有不同。
我已经检查了空格或缺少空格,无法弄清楚为什么查询认为某些企业的名称不同,而实际上它们是相同的。 有没有办法在我的比较中更具体?
输出示例:
柯林斯堡 #1 摩根堡 #1 柯林斯堡 #87 加兰堡 #1 摩根堡#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
"。
其中大部分可以在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
,它是所有企业的总和