表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.名字这样不行 提示操作符丢失
编号 名字 数量
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.名字这样不行 提示操作符丢失
UPDATE 表B INNER JOIN [select max(数量) as total,名字 from 表A group by 名字]. AS C ON 表B.名字=C.名字 SET 表B.数量 = C.total;
你是一下这个语句
JOIN 操作语法错误。
update 表B, A
set 表B.数量=A.mm
from 表B, (select 名字, max(数量) as mm from 表A group by 名字) A
where 表B.名字=A.名字
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;
我没搞懂
mm是什么?
A.名字,A是表A吗?
mm是楼主自己取的别名,max(数量) as mm
A是(select 名字, max(数量) as mm from 表A group by 名字)这个子查询的别名,不是表A
我就想实现这个查询表A
编号 名字 数量
001 张三 100
002 张三 80
002 李四 120
表B
编号 名字 数量
001 张三 0
根据表A中的名字,得到最大数量,更新表B中相同名字的数量
数据库是access的