为了账号安全,请及时绑定邮箱和手机立即绑定

sql_mode=only_full_group_by

sql_mode=only_full_group_by

PHP
拉莫斯之舞 2022-07-09 09:53:58
我试图帮助某人在他的代码上实现新功能;但我有这个错误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_BYMySql控制台中删除

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',''));


查看完整回答
反对 回复 2022-07-09
?
繁花不似锦

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?

因此,这个问题。因此,对于其他列,您有以下选择:

  1. 删除选择中的其他列,

  2. 对其他列使用像 ANY_VALUE 这样的聚合函数

MySQL 的这种强制措施是为了改进语义上不正确的查询,而不是简单地让查询以某种方式获得输出。

如果您仍想禁用该模式,您可以按照其他答案中的说明进行操作。


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信