SELECT リストは GROUP BY 句内になく、非集計列が含まれています。sql_mode=only_full_group_by と互換性がありません。質問する

SELECT リストは GROUP BY 句内になく、非集計列が含まれています。sql_mode=only_full_group_by と互換性がありません。質問する

私は、WAMP サーバーを搭載した Windows PC で MySQL 5.7.13 を使用しています。

私の問題は、このクエリを実行しているときに発生します

SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`

常にこのようなエラーが発生します。

SELECT リストの式 #1 は GROUP BY 句内になく、GROUP BY 句内の列に機能的に依存しない非集計列 'returntr_prod.tbl_customer_pod_uploads.id' が含まれています。これは sql_mode=only_full_group_by と互換性がありません。

最善の解決策を教えていただけますか?

結果は次のようになるはずです:

+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
| id | user_id | load_id | bill_id | latitude | langitude | proof_type | document_type | file_name    | is_private | status | createdon           | updatedon           |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
|  1 |       1 | 78      | 1       | 21.1212  | 21.5454   |          1 |             1 | id_Card.docx |          0 | Active | 2017-01-27 11:30:11 | 2017-01-27 11:30:14 |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+

ベストアンサー1

これ

SELECT リストの式 #1 は GROUP BY 句内になく、GROUP BY 句内の列に機能的に依存しない非集計列 'returntr_prod.tbl_customer_pod_uploads.id' が含まれています。これは sql_mode=only_full_group_by と互換性がありません。

このコマンドで MySQL の SQL モードを変更するだけで簡単に解決できます。

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

これも私の場合はうまくいきました。私のプロジェクトにはこのようなクエリがたくさんあるので、これを使用しました。そこで、SQL モードをonly_full_group_byに変更しました。

または、SELECT ステートメントで指定された GROUP BY 句にすべての列を含めるだけです。sql_mode は有効のままにしておくことができます。

ありがとう。 :-)


更新日:2023年7月14日

SQLモードを変更することは解決策ですが、それでも、構造化クエリ言語のベストプラクティスは、すべての(SELECT * ...)列を選択することを避け、代わりに@Tim Biegeleisenが回答の下で述べているように、グループ化列で集計関数を使用することです。https://stackoverflow.com/a/41887524/3602846

おすすめ記事