user_id
の場合 主キーです 次に、PostgreSQLをアップグレードする必要があります。新しいバージョンでは、主キーによるグループ化が正しく処理されます。
user_id
の場合 もも一意ではありません 問題の「estates」関係の主キーの場合、PostgreSQLには を知る方法がないため、このクエリはあまり意味がありません。 estates
の各列に返される値 複数の行が同じuser_id
を共有する場合 。 min
のように、必要なものを表現する集計関数を使用する必要があります 、max
、avg
、string_agg
、array_agg
、など、または目的の列をGROUP BY
に追加します 。
または、クエリを言い換えてDISTINCT ON
を使用することもできます。 およびORDER BY
本当に任意の行を選択したい場合は、ActiveRecordを介してそれを表現できるかどうかは本当に疑わしいですが。
SQLiteやMySQLを含む一部のデータベースは、任意の行を選択するだけです。これはPostgreSQLチームによって不正確で安全でないと見なされているため、PostgreSQLはSQL標準に従い、そのようなクエリをエラーと見なします。
お持ちの場合:
col1 col2
fred 42
bob 9
fred 44
fred 99
そしてあなたは:
SELECT col1, col2 FROM mytable GROUP BY col1;
次に、行を取得する必要があることは明らかです:
bob 9
しかし、fred
の結果はどうでしょうか ?選択する正しい答えは1つもないため、データベースはそのような安全でないクエリの実行を拒否します。 最高が必要な場合 col2
col1
の場合 max
を使用します 集計:
SELECT col1, max(col2) AS max_col2 FROM mytable GROUP BY col1;