请问,这个关于INNER JOIN的句子为什么报错

dsfvrt3f3 2012-08-08 11:52:40
这条语句是书上的,正确的:
SELECT customers.cust一name, customers.cust一id,Count(orders.order_num) AS num_ord
FROM customers INNER JOIN orders
ON customers.cust一id = orders.custid


下面这条是我写的:

SELECT 客户表.姓名,COUNT(订单主表.订单编号)
FROM 客户表 INNER JOIN 订单主表
ON 客户表.客户编号 = 订单主表.客户编号


问题:
1:上面那条语句虽然不知道字段是啥意思,但根据前缀,你应该懂的
2:我的下面那条语句报错:“选择列表中的列 '客户表.姓名' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中”
请问,是什么意思,为什么上面那条又是对的
...全文
249 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
人生无悔 2012-08-08
  • 打赏
  • 举报
回复
打錯個字,大版已經寫給你了呀,呵呵
http://lqlaps169.blog.51cto.com/855319/280252
人生无悔 2012-08-08
  • 打赏
  • 举报
回复
大版已經寫錯你了呀

select col1,col2,col3,max(col4),min(col5),sum(col6),count(col7),avg(col8)
from 表
where ...
group by col1,col2,col3;

如果有group by,select所有列中要麼出現在聚合函數中,要麼在group by中出現

group by ...
就是按group by後面的分組


就這麼簡單
dsfvrt3f3 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

SELECT 客户表.姓名,COUNT(订单主表.订单编号)
FROM 客户表 INNER JOIN 订单主表
ON 客户表.客户编号 = 订单主表.客户编号
group by 客户表.姓名
[/Quote]
为什么必须用GROUP BY 啊,书上没讲到过,请详解,
或给点资料,谢谢
dsfvrt3f3 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用楼主 的回复:
这条语句是书上的,正确的:
SELECT customers.cust一name, customers.cust一id,Count(orders.order_num) AS num_ord
FROM customers INNER JOIN orders
ON customers.cust一id = orders.custid


書上寫的也是錯的
[/Quote]
书上有group by,我删了的,我以为没影响
人生无悔 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
这条语句是书上的,正确的:
SELECT customers.cust一name, customers.cust一id,Count(orders.order_num) AS num_ord
FROM customers INNER JOIN orders
ON customers.cust一id = orders.custid
[/Quote]

書上寫的也是錯的
中国风 2012-08-08
  • 打赏
  • 举报
回复
存在聚合函数(sum/count/max/min),非聚合函数需要用group by
jyh070207 2012-08-08
  • 打赏
  • 举报
回复

2改为:
SELECT 客户表.姓名,COUNT(订单主表.订单编号)
FROM 客户表 INNER JOIN 订单主表
ON 客户表.客户编号 = 订单主表.客户编号
group by 客户表.姓名
中国风 2012-08-08
  • 打赏
  • 举报
回复
SELECT 客户表.姓名,COUNT(订单主表.订单编号)
FROM 客户表 INNER JOIN 订单主表
ON 客户表.客户编号 = 订单主表.客户编号
group by 客户表.姓名
人生无悔 2012-08-08
  • 打赏
  • 举报
回复

SELECT 客户表.姓名,COUNT(订单主表.订单编号)
FROM 客户表 INNER JOIN 订单主表
ON 客户表.客户编号 = 订单主表.客户编号
group by 客户表.姓名
中国风 2012-08-08
  • 打赏
  • 举报
回复
ON customers.[cust一id] = orders.custid
中国风 2012-08-08
  • 打赏
  • 举报
回复
customers.[cust一id]--加上[]
ORAClE SE 2012-08-08
  • 打赏
  • 举报
回复
我不是说有GROUP BY 的情况,而是说上例中,为什么必须出现GROUP BY??

对于这个问题我只能这么回答:使用聚合函數,必须使用group by聚合函数,相当于select 必须有from一样。

至于检索的显示列,必须参与group by 。也就是说检索a,b列,须group by a,b。
dsfvrt3f3 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

大版已經寫錯你了呀

select col1,col2,col3,max(col4),min(col5),sum(col6),count(col7),avg(col8)
from 表
where ...
group by col1,col2,col3;

如果有group by,select所有列中要麼出現在聚合函數中,要麼在group by中出現

group by ...
……
[/Quote]
我不是说有GROUP BY 的情况,而是说上例中,为什么必须出现GROUP BY
  • 打赏
  • 举报
回复
尽信书则不如无书

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧