只有出现在GROUP  By子句中的属性才能与聚合操作并列出现在SELECT子句中。是不是因为这个?

解决方案 »

  1.   

    把select后边除了avg以外所有的数据项都在group by后面写一遍
      

  2.   

    错误信息是:在update语句中不允许使用统计子句
    使用了group by之后时无法使用update的,数据库将无法确定对哪些纪录进行更新。当然group by可以出现在子查询中
    我不知道你用的是什么数据库,如果在oracle中可以这么写:
    假定表 t_salary (emp_no, dept_no, salary)
    update t_salary x
      set salary = (select x.salary + avg(y.salary)
                      from t_salary y
                     where y.dept_no = x.dept_no);
      

  3.   

    update t_salary x
      set salary = salary +0.5*(
                select avg(y.salary)
                      from t_salary y
                     where y.dept_no = x.dept_no)
    where worksite='上海' or worksite='深圳';
      

  4.   

    SQL SERVER还可以这样:
    update t_salary 
      set salary = x.salary +0.5*y.avgsalary
    from t_salary x,(
     (      select dept_no,avg(salary) as avgsalary
                      from t_salary group by dept_no) as y
    where x.dept_no=y.dept_no and
    (x.worksite='上海' or x.worksite='深圳')
      

  5.   

    udate t_salary set x.salary=x.salary+0.5*avgsalary from t_salary x join (select dept_no,avg(salary) as avgsalary  from t_salary group by dept_no) y on x.dept_no=y.dept_no where (x.worksite='上海' or x.worksite='深圳')