选择列表中的列 'orders.order_id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。



今天进行数据库查询是分组时间出现了:

消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'orders.order_id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

的错误,写的sql语句如下:

select o.goods_id ,g.goods_name,sum(goods_number) total

from orders o left join goods g

on o.goods_id=g.goods_id

group by o.goods_id

在网上查询后有猿友说:其实sql语句的执行顺序不是你写代码的顺序,是先group by 再select的,如果group by中都没有出现这列,select的时候肯定报错。


即指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY表达式必须与选择列表表达式完全匹配

最后SQL语句如下:

select o.goods_id ,g.goods_name,sum(goods_number) total

from orders o left join goods g

on o.goods_id=g.goods_id

group by g.goods_name,o.goods_id

运行正常。

无论select 后面跟了几个字段,除了聚合函数如 count sum avg等之外,都要在

group by后出现,否则就会报上述错误。




你可能感兴趣的:(数据库,bug,基础)