我的sql查询就像
SELECT `speciesname`, sum(`total_species_catch`) as species_catch FROM `species_estimation` GROUP by `speciesid` ORDER by `species_catch` DESC LIMIT 0,10
在localhost phpmyadmin中运行正常
在服务器中,它显示类似
的错误SELECT list is not in GROUP BY clause and contains nonaggregated column 'fimsul.species_estimation.speciesname' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
答案 0 :(得分:1)
这里的快速解决方案是在speciesname
子句中仅包含GROUP BY
:
SELECT
speciesname,
SUM(total_species_catch) AS species_catch
FROM species_estimation
GROUP BY
speciesname,
speciesid
ORDER BY
species_catch DESC
LIMIT 0,10;
在speciesid
子句中也包含SELECT
也许也是有意义的,以防万一两个名称恰好相同,并且id可以用来区分重复项。
请注意,假设speciesid
唯一地确定speciesname
,则当前查询实际上符合ANSI。如果要使用当前版本,则可以禁用ONLY_FULL_GROUP_BY
模式,然后查询将按预期运行。但是,通常您可能希望保持此模式为打开状态。
答案 1 :(得分:0)
尝试下面的方法-可能是您没有在分组依据子句中添加speciesname
SELECT `speciesname`, sum(`total_species_catch`) as species_catch
FROM `species_estimation` GROUP by `speciesname`
ORDER by `species_catch` DESC LIMIT 0,10