我们正在尝试运行此查询。
select ccr.id as id, ccr.title as name, c.name as contract, ccr.status as status
from change_request ccr
LEFT JOIN contract c ON ccr.contract_id = c.id
where ccr.id < 2000
GROUP BY ccr.id, c.id
order by id
抛出错误 * ** 错误 ** *
错误:列“ccr.title”必须出现在GROUP BY子句中或用于聚合函数 SQL状态:42803 性格:22
为什么要求同一个表中的多个列。我的意思是如果我们按ccr.id进行分组,则不应询问同一表中的所有列。
更有趣的是,以下查询(类似于上面)运行正常。
select aim.id as id, aim.name as name, c.name as contract, aim.planned_completion_date as plannedcompetitiondate
from action_item_mgmt aim
LEFT JOIN contract c ON aim.contract_id = c.id
WHERE aim.id < 2000
group by aim.id, c.id
order by id
答案 0 :(得分:2)
在任一查询中都没有聚合(例如count()
,sum()
,avg()
等):完全删除group by
子句。
答案 1 :(得分:1)
我可以看到第一个查询不起作用的唯一方法是列id
不是change_request表的主键。
如果你把它作为主键你的第一个查询应该可以正常工作,尽管如上所述,分组似乎相当多余而没有聚合。