2017-03-20 17 views
1

、GROUP BYに表示されている必要があります。私はそれを実行すると列は、私はこのクエリを持っている句

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. 

なぜエラーが出ますか?私は似たような質問を読んだことがありますが、なぜこの単純なグループが働いていないのかは分かりません。グループのフィールドが "EventReadingListItem"として知られていないためですか?

+2

:。

は、最小/分id値を持っていた各EventIdのためのユニークな行を与えます"EventId"? (PostgreSQLは複数あり、あなたの代わりにランダムに1つを選択しないので) – pozs

+0

そのいずれかです。大事なことじゃない。 max/minを使うべきですか? – oderfla

+1

それはそれほど重要でない場合は、なぜあなたは何を選択したいですか? - 'SELECT min(id)、min(" UserId ")'は、互いに関係のない値を選択するかもしれません(言い換えれば 'id = min(id)' **と** '' UserId "= min(" UserId ")')を同時に実行することができます - あなたは 'DISTINCT ON'を試してみるか、[tag:groups-n-per-group] – pozs

答えて

6

あなたのコメントによれば、これはあなたのために働くはずです。各個別の `「EventReadingListItem」のために、`選択したいんどの `「EventReadingListItem」「ID」の値

select DISTINCT ON (EventId) EventId, id, UserId 
from EventReadingListItems 
order by EventId, id 
関連する問題