用于获取对象总数的Mysql查询
我有一个问题:用于获取对象总数的Mysql查询,mysql,sql,Mysql,Sql,我有一个问题: SELECT t1.id, t3.title, Count(t2.city_id) AS objectsCount FROM geo_data AS t1 INNER JOIN object AS t2 ON t1.uid = t2.city_id AND t2.is_blocked = 0 JOIN geo_data_translation
SELECT t1.id,
t3.title,
Count(t2.city_id) AS objectsCount
FROM geo_data AS t1
INNER JOIN object AS t2
ON t1.uid = t2.city_id
AND t2.is_blocked = 0
JOIN geo_data_translation AS t3
ON t1.id = t3.id
AND t3.language_id = 'de'
WHERE t1.is_city = 1
GROUP BY name;
结果是:
+-----+------------------------------+--------------+
| id | title | objectsCount |
+-----+------------------------------+--------------+
| 404 | Achim | 1 |
| 85 | Ahrensburg | 3 |
| 305 | Ahrensfelde | 2 |
| 471 | Aichach | 1 |
| 377 | Alfeld (Leine) | 1 |
| 373 | Algermissen | 2 |
| 465 | Allershausen | 1 |
| 525 | Alsheim | 1 |
| 152 | Altenmoor | 1 |
| 482 | Anzing | 1 |
| 518 | Armsheim | 3 |
| 562 | Arnsdorf | 1 |
| 109 | Artlenburg | 1 |
| 476 | Aschheim | 1 |
| 224 | Asendorf | 1 |
| 436 | Augusta | 1 |
| 447 | Aystetten | 1 |
| 360 | Banteln | 1 |
我们看到的是一个城市列表,上面有它们的物体名称。
阿希姆城有1个物体,阿伦斯堡有3个物体,以此类推
我想做的是得到所有列出的城市的对象总数。
谢谢试试这个:
SELECT name,
t1.id,
t3.title,
Count(t2.city_id) AS objectsCount
FROM geo_data AS t1
INNER JOIN object AS t2
ON t1.uid = t2.city_id
AND t2.is_blocked = 0
JOIN geo_data_translation AS t3
ON t1.id = t3.id
AND t3.language_id = 'de'
WHERE t1.is_city = 1
GROUP BY name WITH ROLLUP;
WITH ROLLUP
选项将使其添加一个额外的行,其中包含所有计数的总和
请参阅的文档,尝试通过将SELECT全部删除并更改为“SELECT COUNT(t2.city_id)”来删除该组。鉴于此中间结果,所需的结果是什么?
SELECT
COUNT(*) AS objectsCount
FROM
geo_data AS t1
INNER JOIN object AS t2
ON t1.uid = t2.city_id
AND t2.is_blocked = 0
INNER JOIN geo_data_translation AS t3
ON t1.id = t3.id
AND t3.language_id = 'de'
WHERE
t1.is_city = 1;
SELECT name,
t1.id,
t3.title,
Count(t2.city_id) AS objectsCount
FROM geo_data AS t1
INNER JOIN object AS t2
ON t1.uid = t2.city_id
AND t2.is_blocked = 0
JOIN geo_data_translation AS t3
ON t1.id = t3.id
AND t3.language_id = 'de'
WHERE t1.is_city = 1
GROUP BY name WITH ROLLUP;