代码之家  ›  专栏  ›  技术社区  ›  Justin C

将逻辑压缩为一个Sql查询

  •  0
  • Justin C  · 技术社区  · 16 年前

    问题:我的客户的数据库中有一个表,其中包含用于出租的列表。此表中有一个文本字段,用于存储列表所在城市。我的客户希望看到的是所有独特城市的下拉列表,每个城市旁边都有一个数字,表示该城市有多少个房源。

    暂时忽略拼写和大小写问题,我应该使用什么Sql来获取唯一列表以及每个项目计数?为了证明概念,我查询了不同的城市列表(很简单),然后遍历每个城市,查询它在表中的次数。这显然是非常低效的。

    7 回复  |  直到 16 年前
        1
  •  3
  •   Meff    16 年前
    SELECT
     CityName,
     COUNT(*) AS CityListings
    FROM
     YourTable
    GROUP BY
     CityName
    ORDER BY
     CityName
    
        2
  •  2
  •   TomTom    16 年前

    选择城市,从表中按城市分组计数(*)

    ;) 获取一本好的SQL书籍,这是“SQL in 21 hours”级别;)

        3
  •  2
  •   Saar    16 年前

    按城市名称分组

        4
  •  1
  •   Oded    16 年前

    你在找 Group By

    SELECT city, COUNT(city)
    FROM rentals
    GROUP BY city
    ORDER BY city
    
        5
  •  1
  •   shahkalpesh    16 年前

    首先,试试这个

    SELECT City, Count(*)
    FROM myTable
    GROUP BY City
    
        6
  •  1
  •   paxdiablo    16 年前

    你是说像下面这样的事情吗?

    select city, count(city) from listings
    group by city
    

    这应该变成:

    Shepparton blah blah blah
    Mildura    yada yada yada
    Shepparton dum  de   dum
    

    分为:

    Shepparton 2
    Mildura    1
    

    听起来你就是在追求这个。

        7
  •  1
  •   Ervin    16 年前
    SELECT DISTINCT city_name, count(*)
    FROM rentals
    GROUP BY city_name