我实际上遇到了MySQL的一个问题,我需要有类似的GROUP BY行为,但没有分组。
以下是一个名为“resident”的表格的示例,其中包含2列:“name”,“city”。
如果我想计算每个城市的居民人数,我只需要这样做:
SELECT resident.city, count(resident.name) as 'Nb residents'
FROM resident
GROUP BY resident.city
结果如下:
| city | Nb residents |
| NY | 3 |
| HK | 1 |
| Rome | 2 |
...
但我正在寻找一种方法来显示我的结果:
| name | city | Nb residents |
| Name1 | NY | 3 |
| Name2 | NY | 3 |
| Name3 | NY | 3 |
| Name4 | HK | 1 |
| Name5 | Rome | 2 |
| Name6 | Rome | 2 |
有可能吗?
感谢您的帮助。
答案 0 :(得分:3)
SELECT resident.name, resident.city, (select count(a.name) from resident a where a.city = resident.city) as 'Nb residents'
FROM resident
答案 1 :(得分:2)
您可以使用以下查询进行此操作:
SELECT t1.`name`, t2.`city`, t3.`Nb residents`
FROM resident t1
JOIN ( SELECT resident.city, count(resident.name) as 'Nb residents' FROM resident GROUP BY resident.city ) t2
ON t1.`city`= t2.`city`
这会在子查询中提取每个城市的居民数量,然后将其与该表格的名称联系起来。