用于获取对象总数的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;