MySql 5.7の動作を理解しようとしています。SQLSTATE [42000]:構文エラーまたはアクセス違反:1055式#2
SELECT
r.*,
CONCAT(u.fname, ' ', u.lname) AS name
FROM
`events` AS r
LEFT JOIN `users` AS u
ON r.user_id = u.id
WHERE r.event_id = 1
GROUP BY r.user_id
ORDER BY r.date ;
怒鳴るのクエリでは、私は、「リストを選択し、エラーを取得していますGROUP BY句ではなく、GROUP BY句の列に機能的に依存しない非集約列 『r.id』が含まれ、これはと互換性がありませんsql_modeの= ONLY_FULL_GROUP_BY [コード:42000]:STRICT_ALL_TABLES "このような
しかし、クエリが正常に動作し、私は、ローカルホスト上で働いているので
SELECT
r.id,
r.event_id,
r.user_id,
r.date
CONCAT(u.fname, ' ', u.lname) AS name
FROM
`events` AS r
LEFT JOIN `users` AS u
ON r.user_id = u.id
WHERE r.event_id = 1
GROUP BY r.user_id, r.event_id, r.id, r.date
ORDER BY r.date ;
、私はmy.iniファイルと設定のsql_modeへの変更を加えることができます" 、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER "
ライブになると、これは問題になります。多くの人には、特に共有ホスティングではmy.iniファイルにアクセスできないためです。
これは私にとっては少し違っていると思われます。すべての単一フィールドを宣言し、それに応じて集計します。
MySqlでの私の知識は初心者なので、上記の質問を書く良い方法がありますか? 1つのテーブルから10または20のフィールドを取得する必要がある場合、それらのすべてを集約すると、少しばかげているようです。
OPへの注記:select句の集約関数'count()'、 'sum()'などと同じです。ここでは、グループ化のすべての値を評価しています。 – Ray
正しいconcatは集計関数ではありませんlinearです。group_concatは集計関数です – scaisEdge
DuH !!良いキャッチ、私のコメントを編集 – Ray