Postgresql 列“location\u time\u slot.from\u date”必须出现在GROUP BY子句中,或在聚合函数中使用

Postgresql 列“location\u time\u slot.from\u date”必须出现在GROUP BY子句中,或在聚合函数中使用,postgresql,Postgresql,以下是我遇到的问题: SELECT "fightEventId" FROM location_time_slot WHERE "fightId" IN ( SELECT f.id FROM fights AS f WHERE f.status = 'CONFIRMED' ) AND "fightE

以下是我遇到的问题:

SELECT
    "fightEventId"
FROM
    location_time_slot
WHERE
    "fightId" IN (
        SELECT
            f.id
        FROM
            fights AS f
        WHERE
            f.status = 'CONFIRMED'
    )
AND "fightEventId" IN (
    SELECT
        fe.id
    FROM fight_events AS fe
    WHERE true AND (
        NOW() at time zone 'utc' >= fe.from AND NOW() at time zone 'utc' <= fe.to
    ) OR true AND NOW() at time zone 'utc' <= fe.to
      OR false AND NOW() at time zone 'utc' > fe.to
)
GROUP BY "fightEventId"
HAVING 
    COUNT("fightId") >= 2
ORDER BY from_date ASC ;
为什么我会犯这个错误?我想按位置时间槽表中的“起始日期”字段值排序。

您将位置时间槽的行按Fighted分组,以应用HAVING条件。进行分组时,有关起始日期的信息有些丢失,一个组中所有行的起始日期中的哪一个应用于排序

因此,您需要也按from_date分组,这样组中的所有行都将具有相同的from_date,这可用于组的排序,或在聚合函数(如MAXFORM_date)的ORDER by子句中使用from_date;然后就可以清楚地知道组的哪个起始日期用于对组进行排序


按一个属性对行组进行排序,这在组的所有行中不一定相同。这是不可能的。

谢谢。让我看看。是的,一切都很清楚,谢谢你的提示。