我试图帮助某人在他的代码上实现新功能;但我有这个错误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_bySELECT `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 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
ONLY_FULL_GROUP_BY
从MySql
控制台中删除
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
或者
在下面的查询中触发PHPMyAdmin
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
繁花不似锦
TA贡献1851条经验 获得超4个赞
出现此错误是因为 Group By 中的列与 select 中的列不同。GROUP BY 将创建汇总列,因此在 select 中为其他列选择什么值尚不清楚。
UserId | ModuleId
例如:对于具有userId 和 ModuleId 具有 1:N 映射的列的表。
说你跑select UserId, ModuleId from UserModule group by userId;
现在,应该为 userId 选择哪个 moduleId?
因此,这个问题。因此,对于其他列,您有以下选择:
删除选择中的其他列,
对其他列使用像 ANY_VALUE 这样的聚合函数
MySQL 的这种强制措施是为了改进语义上不正确的查询,而不是简单地让查询以某种方式获得输出。
如果您仍想禁用该模式,您可以按照其他答案中的说明进行操作。
- 2 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消