私はPostgreSQLを使ってPHPアプリケーションに問題があります。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
列が「ソート」の記録に使用されている任意の、符号なし整数が含まれています私はこのようになります簡単なSQL文を持っています。
上記の文はEloquent(LaravelのORM)によって発行され、WHERE
句のあるテーブルのレコードを数えているようですが、なぜこのエラーがトリガーされますか?重複する値(sort_order
の値を持つ2つのレコード)がある場合には列をグループ化することは実際には望ましくありませんが、エラーメッセージが示唆している解決策であるようです。
代替ソリューションはありますか?私はPostgreSQLについて非常に新しくなっているので、これは私が今までMySQLに直面していなかったという特殊性のようです。
理由をいただければ幸いです。 –