1. ホーム
  2. マイスル

[解決済み] SELECTリストがGROUP BY句になく、非集計カラムを含む ... sql_mode=only_full_group_by と互換性がない。

2022-03-31 09:49:57

質問

Windows PCでMySQL 5.7.13とWAMPサーバを使用しています。

このクエリを実行する際に問題が発生しました。

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 と非互換性であり、この場合、SELECTリストにはありません。

最適な解決策を教えてください。

次のような結果が必要です。

+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
| 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 |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+

解決方法は?

これは

<ブロッククオート

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は有効のままでよい。

ありがとうございます... :-)