问题描述
想知道是否有人可以对以下错误有所了解.sql 在本地运行良好,但我远程收到以下错误.
Hi wondering if perhaps someone could shed some light on the below error. The sql works fine locally but i get the the below error remotely.
SQL 查询:
SELECT COUNT(node.nid),
node.nid AS nid,
node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
FROM node node
LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC
MySQL 说:
#1140 - 混合 GROUP 列(MIN(),MAX(),COUNT(),...)GROUP 列是非法的,如果有没有 GROUP BY 子句`
#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`
推荐答案
单列使用 聚合函数 起作用,而列不使用聚合函数的版本不起作用,因为您需要指定 GROUP BY
子句.您的查询应如下所示:
The reason a single column using an aggregate function works while the version with columns not using aggregate functions doesn't is because you need to specify a GROUP BY
clause. Here's what your query should look resemble:
SELECT COUNT(n.nid),
n.nid,
ctu.field_update_date_value
FROM NODE n
LEFT JOIN CONTENT_TYPE_UPDATE ctu ON ctu.vid = n.vid
WHERE n.type IN ('update')
GROUP BY n.nid, ctu.field_update_date_value
ORDER BY field_update_date_value DESC
我将您的表别名更改为较短的别名 - 更易于阅读.这是您的问题的核心:
I changed out your table aliases for shorter ones - easier to read. Here's the meat of your issue:
SELECT n.nid,
COUNT(n.fake_example_column),
ctu.field_update_date_value
...
GROUP BY n.nid, ctu.field_update_date_value
我修改了示例以使用假列,以突出需要如何定义 GROUP BY.您引用的任何列都应该在GROUP BY
中提及而没有包含在聚合函数中应该被提及.我说应该因为MySQL 是我所知道的唯一一个支持 GROUP BY
的数据库,您可以在其中选择性地省略列 - 关于为什么查询在 MySQL 上工作但不能移植的问题有很多无需更改其他数据库.显然,在您的情况下,您仍然需要至少定义一个.
I altered the example to use a fake column in order to highlight how the GROUP BY needs to be defined. Any column you reference without wrapping in an aggregate function should to be mentioned in the GROUP BY
. I say should because MySQL is the only db I'm aware of that supports a GROUP BY
where you can selectively omit columns - there are numerous SO questions about why queries work on MySQL but can't be ported without change to other dbs. Apparently in your case, you still need to define at least one.
这篇关于MySQL #1140 - GROUP 列的混合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!