B,C,D 要放在聚合函数中 比如:max(b),max(c)或者
group by a,b,c,d

解决方案 »

  1.   

    WHERE里A,B,C,D可以随意用,但SELECT里不能直接用B,C,D.
      

  2.   

    可以正常使用啊,
    不太清楚你说的是什么意思?
    email: [email protected]
      

  3.   

    可以正常使用啊,
    不太清楚你的意思?
    email:[email protected]
      

  4.   

    Group by 在使用的时候,必须在Group by子句中列出select选择列表中所有的非集合项(用到集合函数的项)
    把b,c,d都加到集合函数中就能通过。
      

  5.   

    使用分级查询,一定要遵守一个规则,
    就是:分级查询返回的列必须要么在GROUP BY列表中引用,要么用在聚合函数中.其他列可用于进行过滤操作或者排序操作,但是这些列的值不能在结果集中返回.以你的为例:
    SELECT A,B,C,D FROM TABL1
           WHERE 。
            GROUP BY A 
    如果要在结果集中返回BCD列,要么在GROUP BY中出现,要么使用聚合函数.以上所述规则为界限.
      

  6.   

    谢谢各位的回答。比如我要SELECT 班级,姓名,性别,出生日期,备注,期未总分 FROM STU
                  WHERE 。
                    GROUP BY 班级
    如果把所有字段都放在GROUP BY 里面,那么备注和日期字段又无法进行。
    还有什么方法可以更好地解决呢?
      

  7.   

    SELECT 班级,姓名,性别,出生日期,备注,sum(期未总分) FROM STU 
                  WHERE 。 
                    GROUP BY 班级 ,姓名,性别,出生日期,备注
      

  8.   

    如果楼主要对同班级成员算总分,直接写成:
    SELECT 班级,姓名,性别,出生日期,备注,sum(期未总分) FROM STU  
                  WHERE 。  
                    GROUP BY 班级 ,姓名,性别,出生日期,备注注:备注(text)和日期(datetime)是可以排序的。试试看这样能不能得到你想要的结果
      

  9.   

    group by  后面跟的列不能随意写,   应该是 select 后面的所有未使用聚合函数的列.
      

  10.   

    谢谢楼上的。但是有时候好像又必须得写。
    10楼的朋友,TEXT数据类型的好像不能GROUP BY吧?日期的可以没错。
      

  11.   

    不是非要TEXT类型的就改成varchar吧,没有这些不必要的麻烦。