Php sql\u mode=查询语句中仅\u full\u group\u by

Php sql\u mode=查询语句中仅\u full\u group\u by,php,mysql,sql,Php,Mysql,Sql,在查询中错误地找到了sql\u mode=only\u full\u group\u。我已经尝试了许多方法来修复它。更改了sql\u mode=。我仍然收到此错误 PDOException:SQLSTATE[42000]:语法错误或访问冲突:SELECT列表的1055表达式1不在GROUP BY子句中,并且包含未聚合的列“intranet.a.tagid”,该列在功能上不依赖GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容: 我已经给了

在查询中错误地找到了sql\u mode=only\u full\u group\u。我已经尝试了许多方法来修复它。更改了sql\u mode=。我仍然收到此错误

PDOException:SQLSTATE[42000]:语法错误或访问冲突:SELECT列表的1055表达式1不在GROUP BY子句中,并且包含未聚合的列“intranet.a.tagid”,该列在功能上不依赖GROUP BY子句中的列;这与sql\u mode=only\u full\u group\u by不兼容:

我已经给了表字段

这是您的查询:

SELECT m.tagid, w.tagword, m.metric 
FROM nextag_metrics m LEFT JOIN
     nextag_words w
     ON m.tagid = w.id
WHERE w.tagword is not NULL AND m.type = 'filedepot' OR
      m.groupid in (2931, 2938, 2941) OR
      m.userid in (1) OR
      m.categoryid in (2,3,4,5,6,8,9,10,11)
GROUP BY w.tagword
ORDER BY w.tagword ASC;
此查询还有其他问题。首先,对于您的特定问题,不要破坏数据库,只有完整的分组才是数据库的工作方式。修复查询

以下是一些其他问题和潜在问题:

WHERE子句是可疑的。我猜它不能完全满足你的要求。 在大多数情况下,在左联接的第二个表上进行聚合是愚蠢的。该值可能为空。 尚不清楚tagid和度量值应来自哪一行。
我建议你再问一个问题。在查询中以文本表的形式提供示例数据,并清楚地解释您试图执行的操作。

如何修复查询本身?您需要按所有未聚合的投影字段进行分组。如果您不明白原因,您可能还没有真正了解您正试图解决的问题。该分组依据无效,将在较新的MySQL版本上引发错误,除非处于兼容模式,并在较旧的MySQL版本上返回不可预测的结果。常规GROUP BY规则说:如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是集合函数的参数!选择什么@@sql\u模式;怎么说?我修改了我的
SELECT m.tagid, w.tagword, m.metric 
FROM nextag_metrics m LEFT JOIN
     nextag_words w
     ON m.tagid = w.id
WHERE w.tagword is not NULL AND m.type = 'filedepot' OR
      m.groupid in (2931, 2938, 2941) OR
      m.userid in (1) OR
      m.categoryid in (2,3,4,5,6,8,9,10,11)
GROUP BY w.tagword
ORDER BY w.tagword ASC;