0

我有一个位置模型,它有几列:标题、地址、城市、州等......

我正在尝试根据我的数据库中的位置显示所有城市的列表。然后,我试图弄清楚每个城市有多少个地点。

我希望能够输出类似

Tampa(10) 
Denver(20)
Atlanta(15)
... and so on

目前要获取数据库中的城市列表,我使用以下代码:

cities = Location.uniq.pluck(:city)

从技术上讲,我可以遍历所有城市并执行 COUNT(*) WHERE city = "cityname"... 但这似乎是一种非常低效的方法。

有没有更好的方法来实现这一点?

4

2 回答 2

1

你应该使用 GROUP BY insted

SELECT city, COUNT(*) FROM locations GROUP BY city;
于 2013-05-31T20:23:18.147 回答
1
Location.group(:city).count

这将为您提供一个哈希值,其中城市作为键,值作为计数

于 2013-05-31T20:57:27.217 回答