sql语句学习笔记(10)-group by(因为该列没有包含在聚合函数或 GROUP BY 子句中。聚合函数不能出现在where中)
2010-06-02 17:13
821 查看
捐款表tb_donation的结构如下:
id name direction amount
1 a 地震 200
2 a 旱灾 400
3 a 地震 400
5 b 地震 200
9 b 旱灾 200
11 c 地震 200
... ... ... ...
... ... ... ...
... ... ... ...
统计捐款超过2次的人:
select * from tb_donation,sum(amount)
group by name
having count(*)>1
这样会报错误:因为该列没有包含在聚合函数或 GROUP BY 子句中.
原因在于:group by后要求出现select子项中所有的非聚合函数列,上述语句中的*包含了多列,但只有name在group by中出现,所以会报错。
结论:使用group by时,select的子项必须在group by中出现或是出现在聚合函数中。
上述语句应该写成:
select name from tb_donation,sum(amount)
group by name
having count(*)>1
也不要写成了
select name from tb_donation,sum(amount)
where count(*)>1
group by name
where条件时最初始的帅选条件,不能出现聚合函数
id name direction amount
1 a 地震 200
2 a 旱灾 400
3 a 地震 400
5 b 地震 200
9 b 旱灾 200
11 c 地震 200
... ... ... ...
... ... ... ...
... ... ... ...
统计捐款超过2次的人:
select * from tb_donation,sum(amount)
group by name
having count(*)>1
这样会报错误:因为该列没有包含在聚合函数或 GROUP BY 子句中.
原因在于:group by后要求出现select子项中所有的非聚合函数列,上述语句中的*包含了多列,但只有name在group by中出现,所以会报错。
结论:使用group by时,select的子项必须在group by中出现或是出现在聚合函数中。
上述语句应该写成:
select name from tb_donation,sum(amount)
group by name
having count(*)>1
也不要写成了
select name from tb_donation,sum(amount)
where count(*)>1
group by name
where条件时最初始的帅选条件,不能出现聚合函数
相关文章推荐
- SQL统计数量,查询多列问题解决,(因为该列没有包含在聚合函数或 GROUP BY 子句中。)
- 使用sql server时碰到的错误 关于对象.属性qingjia.id' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- ORDER BY 子句中的列 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- SQL---该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列 '***' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- SQLgroupby报 错 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 数据库查询报错:选择列表中的列 '字段' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
- SQL语句中,WHERE子句不能有聚合函数问题
- 关于因为该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 关于因为该列没有包含在聚合函数或 GROUP BY 子句中
- GROUP BY 子句中 选择列表中的列无效,因为该列没有包含在聚合函数或
- 选择列表中的列 '***' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
- 当一个SQL语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序
- 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句