为什么我从 SQL 查询中删除 GROUP BY 语句后会收到此错误消息?
Why am I obtaining this error message removing the GROUP BY statment from a SQL query?
我不太喜欢 SQL,我对这个 MySql 查询有以下疑问:
SELECT x.*
FROM Market_Commodity_Price_Series x
JOIN
(
/**
RETURN THE LATEST INFO:
**/
SELECT measure_unit_id
, currency_id
, market_commodity_details_id
, MAX(price_date) price_date
FROM Market_Commodity_Price_Series AS MCPS
INNER JOIN MarketDetails_CommodityDetails AS MD_CD ON MCPS.market_commodity_details_id = MD_CD.id
INNER JOIN MarketDetails AS MD ON MD_CD.market_details_id = MD.id
INNER JOIN CommodityDetails AS CD ON MD_CD.commodity_details_id = CD.id
WHERE MD.id = 4
AND CD.id = 4
GROUP BY measure_unit_id, currency_id, market_commodity_details_id
) y
ON y.measure_unit_id = x.measure_unit_id
AND y.currency_id = x.currency_id
AND y.market_commodity_details_id = x.market_commodity_details_id
AND y.price_date = x.price_date;
为什么要删除 GROUP BY measure_unit_id, currency_id, market_commodity_details_id 声明从加入 "table" 我得到以下错误信息?
#42000In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'digital_services_DB.MCPS.measure_unit_id'; this is incompatible with sql_mode=only_full_group_by
这就是 SQL 语言的定义方式。
如果您 select 除了任何非聚合之外还有任何聚合(SUM、MAX 等),您必须在所有非聚合列上包含 GROUP BY 子句。
每当您 运行 聚合查询(例如 SUM、MAX、MIN...)时 SQL 需要按未聚合的列对所有结果进行分组。因此,它要求您对所有未聚合的列进行 GROUP BY。在您的情况下,这将是 measure_unit_id、currency_id 和 market_commodity_details_id。
您试图通过删除 GROUP BY 来达到什么目的?
我不太喜欢 SQL,我对这个 MySql 查询有以下疑问:
SELECT x.*
FROM Market_Commodity_Price_Series x
JOIN
(
/**
RETURN THE LATEST INFO:
**/
SELECT measure_unit_id
, currency_id
, market_commodity_details_id
, MAX(price_date) price_date
FROM Market_Commodity_Price_Series AS MCPS
INNER JOIN MarketDetails_CommodityDetails AS MD_CD ON MCPS.market_commodity_details_id = MD_CD.id
INNER JOIN MarketDetails AS MD ON MD_CD.market_details_id = MD.id
INNER JOIN CommodityDetails AS CD ON MD_CD.commodity_details_id = CD.id
WHERE MD.id = 4
AND CD.id = 4
GROUP BY measure_unit_id, currency_id, market_commodity_details_id
) y
ON y.measure_unit_id = x.measure_unit_id
AND y.currency_id = x.currency_id
AND y.market_commodity_details_id = x.market_commodity_details_id
AND y.price_date = x.price_date;
为什么要删除 GROUP BY measure_unit_id, currency_id, market_commodity_details_id 声明从加入 "table" 我得到以下错误信息?
#42000In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'digital_services_DB.MCPS.measure_unit_id'; this is incompatible with sql_mode=only_full_group_by
这就是 SQL 语言的定义方式。
如果您 select 除了任何非聚合之外还有任何聚合(SUM、MAX 等),您必须在所有非聚合列上包含 GROUP BY 子句。
每当您 运行 聚合查询(例如 SUM、MAX、MIN...)时 SQL 需要按未聚合的列对所有结果进行分组。因此,它要求您对所有未聚合的列进行 GROUP BY。在您的情况下,这将是 measure_unit_id、currency_id 和 market_commodity_details_id。
您试图通过删除 GROUP BY 来达到什么目的?