为什么我需要按照不需要分组的列进行分组?

时间:2017-06-13 02:25:15

标签: postgresql

说我有这样的查询:

                SELECT
                    car.id,
                    car.make,
                    car.model,
                    car.vin,
                    car.year,
                    car.color
                FROM car GROUP BY car.make

我想通过make对结果进行分组,这样我就可以消除任何重复的结果。我基本上是想做一个SELECT DISTINCT。但是我得到了这个错误:

ERROR column must appear in the GROUP BY clause or be used in an aggregate function

当我不希望在一个组中看到任何一个列时,按列分组似乎很愚蠢。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

而不是let date = NSDate() self.datePickerFrom.maximumDate = date as Date self.datePickerTo.minimumDate = datePickerFrom.date ,请使用GROUP BY

DISTINCT ON

这将为每个make返回一个任意行。哪排?任意一个。您可以在SELECT DISTINCT ON (c.make) c.* FROM car c ORDER BY c.make; 中包含第二个键,以确定您想要的特定行(最便宜,最旧等)。

答案 1 :(得分:0)

SELECT列表中的所有列名必须出现在GROUP BY子句中,除非name仅用于聚合函数。 PostgreSQL只允许您省略GROUP BY子句列,这些列在功能上依赖于GROUP BY中的列。