在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句(
|
今天碰到这问题,从一个blog转来的,写的很好。归结一下,select中要查询的字段除了聚合函数中的项,其余的项都要包含在group by后面;group by在效果上也是与distinct一样的。 突然看到这个问题,脑袋一蒙,不知道啥意思,后来想想,试图把select里的选项放到后面,问题自然解决! 下面这个就是报“在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句”问题语句select shipcountry,sum(shipvia) as totalvia,OrderDate as thefirsttime from orders group by shipcountry 下面是通过的,请注意 orderdate select shipcountry,OrderDate as thefirsttime from orders group by shipcountry,orderdate 相应的从网上看到其他的朋友也有这样的问题 比如要显示authors表中的au_fname,au_lname,zip,city,state信息,并且按city分组(相同city的排列在一起) 错误的表达: 就会出现:服务器: 消息 8120,级别 16,状态 1,行 1 正确的表达: 即指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。 其实还有更好的办法: 还是authors表,要求在每个城市取一个作者,显示该作者的左右信息: 比如要显示authors表中的au_fname,zip,state 即指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。 其实还有更好的办法: 还是authors表,要求在每个城市取一个作者,显示该作者的左右信息: http://blog.sina.com.cn/s/blog_41399b8b01000997.html (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
