日期:2014-05-18  浏览次数:20545 次

GROUP BY出错,如何使用?谢谢!
SELECT A,B,C,D FROM TABL1
  WHERE 。。。。
  GROUP BY A

其中B,C,D等字段要怎么显示?要显示的字段中有的是TEXT数据类型,有的是日期型的。

------解决方案--------------------
B,C,D 要放在聚合函数中 比如:max(b),max(c)

或者
group by a,b,c,d
------解决方案--------------------
WHERE里A,B,C,D可以随意用,但SELECT里不能直接用B,C,D.
------解决方案--------------------
可以正常使用啊,
不太清楚你说的是什么意思?
email: gaoshaochun0301@163.com
------解决方案--------------------
可以正常使用啊,
不太清楚你的意思?
email:gaoshaochun0301@163.com
------解决方案--------------------
Group by 在使用的时候,必须在Group by子句中列出select选择列表中所有的非集合项(用到集合函数的项)
把b,c,d都加到集合函数中就能通过。
------解决方案--------------------
使用分级查询,一定要遵守一个规则,
就是:分级查询返回的列必须要么在GROUP BY列表中引用,要么用在聚合函数中.其他列可用于进行过滤操作或者排序操作,但是这些列的值不能在结果集中返回.

以你的为例:
SELECT A,B,C,D FROM TABL1
WHERE 。。。。
GROUP BY A 
如果要在结果集中返回BCD列,要么在GROUP BY中出现,要么使用聚合函数.以上所述规则为界限.
------解决方案--------------------
SELECT 班级,姓名,性别,出生日期,备注,sum(期未总分) FROM STU 
WHERE 。。。。 
GROUP BY 班级 ,姓名,性别,出生日期,备注

------解决方案--------------------
如果楼主要对同班级成员算总分,直接写成:
SELECT 班级,姓名,性别,出生日期,备注,sum(期未总分) FROM STU
WHERE 。。。。
GROUP BY 班级 ,姓名,性别,出生日期,备注

注:备注(text)和日期(datetime)是可以排序的。

试试看这样能不能得到你想要的结果
------解决方案--------------------
group by 后面跟的列不能随意写, 应该是 select 后面的所有未使用聚合函数的列.
------解决方案--------------------
不是非要TEXT类型的就改成varchar吧,没有这些不必要的麻烦。