我正在尝试在用户表中计算一组不同城市和国家的出现次数。
该表格的设置类似于:
userid city country
------ --------- --------------
1 Cambridge United Kingdom
2 London United Kingdom
3 Cambridge United Kingdom
4 New York United States
我需要的是每个城市,国家对出现次数的列表。Cambridge, United Kingdom, 2
London, United Kingdom, 1
New York, United States, 1
目前我运行一个SQL查询以获取不同的一对:
$array = SELECT DISTINCT city, country FROM usertable
然后在PHP中将其读入数组中,并循环遍历该数组,在每个数组行中运行查询以计算每个行的每个出现次数:
SELECT count(*) FROM usertable
WHERE city = $array['city']
AND country = $array['country']
我假设我对SQL的理解不够深入,那么正确的方法应该是什么,最好不需要PHP的干预?
count(*)
只会是baseview
中行的总数,这不是 OP 想要的。 - Dawood ibn Kareemdistinct
不能帮助你。这里有两个问题。(1) 子查询中没有cityandcountry
。(2) 没有与count(*)
配合使用的group by
。当你在没有group by
的情况下使用count(*)
时,它会计算整个查询中的所有行。这根本不是 OP 想要的。 - Dawood ibn Kareem