2011-11-20 10 views
1

を使用する私はMySQLデータベースに次のクエリを持っている:PGError:ERROR:「inboxes.id」欄は、GROUP BY句に現れなければならないか、集計機能で

SELECT inboxes.* 
    , count(inboxes.conv) AS times 
    , max(created_at) AS created_at 
FROM `inboxes` 
WHERE to_user = 2 
    OR account_id = 2 
GROUP BY conv 
ORDER BY id DESC 

このクエリは、私のローカルホスト上で動作し、しかし、私はHerokuのにそれを展開する場合、私はこのエラーを取得します:

PGError: ERROR: column "inboxes.id" must appear in the GROUP BY clause or 
       be used in an aggregate function 

答えて

2

データベースは本番環境で使用しています。

+0

IDはグループ化されていないので、サンプルはおそらく動作しません。 –

+0

私の間違い、ありがとう; – pomaxa

+3

お返事ありがとうございました。しかし、テーブルのすべての列を操作する必要がある場合はどうすればよいですか?そして次のstuf - 私が 'GROUP BY inboxes.id、conv'を使うとき、私は' GROUP BY conv'だけを使うよりも他の出力を得ます。 – user984621

1

あなたはinboxes.*を取り除く必要があります。フェッチする必要のある個々のパラメータをリストします。

すべてのパラメータはグループ化するか(GROUP BY)、グループ関数(MAXなど)と一緒に使用する必要があります。

あなたのローカルホスト上で動作している理由はわかりません。 、今後このような問題を避けるため、ローカルのPostgresをインストールし、同じを使用してアプリケーションを開発するに

SELECT inboxes.id, count(inboxes.conv) AS times, max(created_at) as created_at FROM受信トレイWHERE (to_user = 2 OR account_id = 2) GROUP BY inboxes.id, conv ORDER BY inboxes.id DESC

2

:あなたはあなたが選択したいGROUP BY内のすべてのフィールド、すなわちを指定する必要が

関連する問題