表A 
编号  名字  数量 
001  张三  100 
002  张三  80 
002  李四  120 
表B  
编号  名字  数量 
001  张三  0 
根据表A中的名字,得到最大数量,更新表B中相同名字的数量
数据库是access的
update b set 
b.数量=isnull(a.mm,0) from (select max(数量) as mm,名字 group by 表A) a on b.名字=a.名字这样不行 提示操作符丢失

解决方案 »

  1.   


    UPDATE 表B INNER JOIN [select max(数量) as total,名字 from 表A group by 名字]. AS C ON 表B.名字=C.名字 SET 表B.数量 = C.total;
    你是一下这个语句
      

  2.   

    C是表A吧?
    JOIN 操作语法错误。
      

  3.   


    update 表B, A
    set 表B.数量=A.mm
    from 表B, (select 名字, max(数量) as mm from 表A group by 名字) A
    where 表B.名字=A.名字
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      str: String;
    begin
      with adoquery1 do
      begin
        close;
        sql.text := ' update B set 数量=DMax("[数量]", "A", "[编号] = ''"&B.[编号]&"''")';
        memo1.lines.add(sql.text);
        ExecSql;
      end;
    end;
      

  5.   


    我没搞懂
    mm是什么?
    A.名字,A是表A吗?
      

  6.   


    mm是楼主自己取的别名,max(数量) as mm
    A是(select 名字, max(数量) as mm from 表A group by 名字)这个子查询的别名,不是表A
      

  7.   


    我就想实现这个查询表A 
    编号  名字  数量 
    001  张三  100 
    002  张三  80 
    002  李四  120 
    表B  
    编号  名字  数量 
    001  张三  0 
    根据表A中的名字,得到最大数量,更新表B中相同名字的数量
     
    数据库是access的