我试图帮助别人在他的代码上实现新的功能;但我有这个错误
Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'br_interne.questionnaires_reponses.re_int' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
SELECT `ch_ref` AS id, `ch_date_prevue` AS date, `ch_prestataire_terrassement_branchement` AS prestataire, `re_int` FROM (`questionnaires_contacts`) JOIN `chantiers_osr` ON `ch_ref`=`qc_chantier_id` JOIN `communes` ON `ch_insee`=`co_insee` JOIN `departements` ON `co_departement`=`de_id` LEFT JOIN `questionnaires_reponses` ON `re_questionnaire_contact` = `qc_id` AND re_question = 7 WHERE `de_id` = '78' AND `ch_date_prevue` >= '0000-00-00' AND `qc_chantier_type` = 'osr' AND `qc_invitation_envoyee` = '1' GROUP BY `qc_chantier_id`
不幸的是,如果改变SQL_mode的请求不工作.(真的很奇怪,因为这段代码在服务器上工作).
如果你有任何想法。即使与文档的SQL我可以找到解决方案来修改这个请求。
先谢谢你了。
2条答案
按热度按时间r7s23pms1#
从
MySql
控制台删除ONLY_FULL_GROUP_BY
或
激发
PHPMyAdmin
中的下方查询toiithl62#
出现此错误是因为Group By中的列与select中的列不同。GROUP BY将创建汇总列,因此不清楚为select中的其他列选取什么值。
例如:对于具有列
UserId | ModuleId
的表,其中userId和ModuleId具有1:NMap。假设您运行
select UserId, ModuleId from UserModule group by userId;
现在,应该为userId选择哪个moduleId?
因此,这个问题。因此,对于其他列,您有以下选择:
1.删除选择中其他列,
1.对其它列使用ANY_VALUE之类的集合函数
MySQL的这种强制是为了改进语义上不正确的查询,而不是简单地让查询以某种方式获得输出。
如果您仍想禁用该模式,您可以按照其他答案中的说明进行操作。