我不太喜欢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;
为什么从已连接的“表”中删除组measure_unit_id、currency_id、market_commodity_details_id状态以获得以下错误消息?
#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
发布于 2017-10-06 12:58:23
这就是SQL语言的定义方式。
如果您选择任何集合(SUM、最大值等)除了任何非聚合项之外,还必须在所有非聚合列上包含一个GROUP子句。
发布于 2017-10-06 12:59:03
无论何时运行聚合查询(例如SUM、MAX、MIN.)SQL需要将所有结果按未聚合的列分组。因此,它要求您按未聚合的所有列进行分组。在您的例子中,这将是measure_unit_id、currency_id和market_commodity_details_id。
你想通过取消这个小组来达到什么目的?
https://stackoverflow.com/questions/46606235
复制相似问题