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吧,没有这些不必要的麻烦。