MySQL连接表和计数实例

时间:2011-10-20 14:42:53

标签: mysql sql

假设我有以下表格:

Countries
---------------------------
| ID | Country Name       |
---------------------------
| 1  | Greece             |
| 2  | Italy              |
| 3  | Spain              |
---------------------------

Cities
---------------------------
| ID | City               |
---------------------------
| 1  | Athens             |
| 2  | Patra              |
| 3  | Rome               |
| 4  | Venice             |
---------------------------

Countries & Cities
--------------------
| ID | Cntr | City |
--------------------
| 1  |   1  |   2  |
| 2  |   1  |   1  |
| 3  |   2  |   3  |
--------------------

现在,我如何运行MySQL查询,根据“国家和城市”表格返回国家名称和城市总数?

返回示例:

---------------------------
| Cities | Country        |
---------------------------
| 2      | Greece         |
| 1      | Italy          |
---------------------------

4 个答案:

答案 0 :(得分:1)

试试这个:

SELECT COUNT(cs.City) as Cities, cn.name as Country
FROM countries cn 
INNER JOIN country_city cs ON cs.Cntr = cn.id 
GROUP BY cn.name

<强>输出:

2   | Greece
1   | Italy

答案 1 :(得分:1)

SELECT cn.Name, COUNT(*)
FROM CountriesAndCities cc
JOIN Countries cn ON (cn.ID = cc.Cntr)
GROUP BY cn.Name

答案 2 :(得分:1)

只需要一个JOIN

SELECT `c`.`name`, COUNT(`c`.id) 
FROM `countries_cities` AS `cc`
JOIN `countries` AS `c`
ON `c`.id = `cc`.country_id
GROUP BY `cc`.country_id

答案 3 :(得分:1)

您只需要对国家/地区的国家/地区进行分组即可。城市表:

SELECT COUNT(1), c.Name 
FROM [countriesAndCities] cnc 
INNER JOIN [country] c ON cnc.cnt = c.id
GROUP BY c.Name