の乗馬の上に、私は、このSQL文を実行している:sql_modeの= ONLY_FULL_GROUP_BYが、オプションなしの場合
SELECT
*, GROUP_CONCAT(contact) AS contact
FROM
table4, table3, table2, table1
WHERE
table1.id = 1
AND table2.var_id = table1.id
AND table3.var_id = table1.id
GROUP BY
table1.id
はエラーを取得:
GROUP_CONCAT(contact)" doit récupérer les contact de la table4
それは私がこの使用という理由だけで動作します:
をset global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
私の問題は、私の要求が別のサーバで使われなければならないということです。 問題。
オプションを超過しないで同じ結果を取得するにはどうすればよいですか?
Expression #%u of %s is not in GROUP BY clause and contains nonaggregated column '%s' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
エラーが各テーブルに自分自身を繰り返し、私は尋ねた要素を追加した場合、私の結果は何の連結連絡先だけが最初の「接触」の結果を持っていません。
集計列を選択しないようにクエリを修正できます。これをリファクタにとって良い時期と考えてください。これを行うと、モードがどこにあるのかは関係ありません。どこでも動くからです。 –
その他のコメント:古いスタイルの結合を使用しています。また、 'table4'にクロス結合しているようです。 –