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;然后就可以清楚地知道组的哪个起始日期用于对组进行排序
按一个属性对行组进行排序,这在组的所有行中不一定相同。这是不可能的。谢谢。让我看看。是的,一切都很清楚,谢谢你的提示。