0

私はこのクエリを持っています(MySQLでうまく機能します):

SELECT units.*, activity_logs.created_at 
FROM "units" left join activity_logs on units.id=activity_logs.unit_id 
GROUP BY units.id 
ORDER BY activity_logs.created_at desc

Postgresはこのエラーを出します:

PG::Error: ERROR:  column "activity_logs.created_at" must appear in the GROUP BY clause or be used in an aggregate function

PostgresがSQLに関して正しいことは知っていますが、どうすれば欲しいものを手に入れることができますか?これは、すべてのユニットテーブルに結合された各ユニットの最新のactivity_logエントリですか?

前もって感謝します!

  • ジェイコブ
4

1 に答える 1

3

エラーはそれを説明しています:これを決定論的にするには、集計関数を使用する必要があります。

SELECT units.*, max(activity_logs.created_at)
FROM "units" left join activity_logs on units.id=activity_logs.unit_id 
GROUP BY units.id 
ORDER BY max(activity_logs.created_at) desc;
于 2013-02-21T06:45:07.183 に答える