我遇到了使用PostgreSQL的PHP應用程序的問題。我有一個簡單的SQL語句,看起來像這樣:PostgreSQL:列必須出現在GROUP BY子句中或用於聚合函數中
select count(*) as aggregate from "categories" where "promoter_id" = ? order by "sort_order" asc
但它觸發以下錯誤:
SQLSTATE[42803]: Grouping error: 7 ERROR: column "categories.sort_order" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: ...om "categories" where "promoter_id" = $1 order by "sort_orde... ^(SQL: select count(*) as aggregate from "categories" where "promoter_id" = 7 order by "sort_order" asc)
的sort_order
列包含了用於「排序」記錄隨心所欲,無符號整數。
上面的語句是由Eloquent(Laravel的ORM)發出的,似乎只是用WHERE
子句計算表中的記錄,那麼爲什麼會觸發這個錯誤?如果存在重複值(即sort_order
值爲2
的值爲兩個記錄),但我認爲並不真正需要對sort order
列進行分組,但似乎是錯誤消息是建議的解決方案。
是否有替代解決方案?我對PostgreSQL相當陌生,所以這似乎是我迄今爲止還沒有面對過MySQL的一個特點。
原因反對票,將不勝感激。 –