Postgresql 列必须出现在GROUP BY子句中

Postgresql 列必须出现在GROUP BY子句中,postgresql,Postgresql,我有一个疑问: SELECT "EventReadingListItem"."id" , "EventReadingListItem"."UserId" FROM "EventReadingListItems" AS "EventReadingListItem" group by "EventReadingListItem"."EventId"; 当我运行它时,我得到了错误 Column "EventReadingListItem"."id" must appear in the GROU

我有一个疑问:

SELECT 
"EventReadingListItem"."id"
, "EventReadingListItem"."UserId"
FROM "EventReadingListItems" AS "EventReadingListItem" 
group by "EventReadingListItem"."EventId";
当我运行它时,我得到了错误

Column "EventReadingListItem"."id" must appear in the GROUP BY clause or be used in an aggregate function.

为什么??我读过类似的问题,但我真的不明白为什么这个简单的分组方式不起作用。是否因为group by中的字段尚未命名为EventReadingListItem

所以,根据你的评论,这应该适合你

为具有最小/min id值的每个EventId提供唯一行:


所以,根据你的评论,这应该适合你

为具有最小/min id值的每个EventId提供唯一行:


要为每个不同的EventReadingListItem.EventId选择EventReadingListItem.id的哪个值?因为可能有多个&PostgreSQL不会随机选择一个,而不会选择任何一个。这不重要。我应该使用max/min吗?好吧,如果它不是那么重要,为什么要选择任何一个呢选择minid,minUserId可能会选择值,而这些值彼此无关换句话说,可能没有实际的行,同时具有id=minid和UserId=minUserId-您可以尝试在EventReadingListItem.id的值要从中选择的某些解决方案上进行区分,对于每个不同的EventReadingListItem.EventId?因为可能有多个&PostgreSQL不会随机选择一个,而不会选择任何一个。这不重要。我应该使用max/min吗?好吧,如果它不是那么重要,为什么要选择任何一个呢选择minid,minUserId可能会选择值,这些值彼此之间没有任何关系换句话说,可能没有实际的行,同时具有id=minid和UserId=minUserId-您可以尝试使用DISTINCT ON,或者使用
select DISTINCT ON (EventId) EventId, id, UserId
from EventReadingListItems
order by EventId, id