2011-11-20 79 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

你需要指定GROUP BY各個領域,你想選擇,即:

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

+0

該ID未分組,因此您的示例可能無法使用。 –

+0

我的錯誤,謝謝; – pomaxa

+3

謝謝你們的回覆。但是如果我需要使用表格中的所有列呢?而下一個stuf - 當我使用GROUP BY inboxes.id,conv'時,所以我得到了另一個輸出,如果我只使用'GROUP BY conv' – user984621

1

你應該擺脫inboxes.*的。列出您需要獲取的每個單一參數。

所有參數必須分組(GROUP BY)或與組功能(MAX等)一起使用。

我不能告訴你爲什麼它在你的本地主機上工作。

2

爲了避免將來出現這樣的問題,在本地安裝的Postgres和發展同您的應用程序它在生產中使用的數據庫。

相關問題