我需要的是一个sql为以下我有表
P which has columns PID, X, DX (PID is PK)
E which as columns EID, PID, X (EID is PK)表E的每个PID都有多个条目
不起作用的语句是
update P,E set P.X=P.X+E.X, P.DX = E.X where P.PID = E.PID我认为它应该是一个更新P集P.X = ?,P.DX =?select( Sum(X) from E group by PID) (从E组中按PID选择Sum(X))
但我不知道如何获取select的输出,并将其与P连接,并在每行上设置两个值;
任何帮助都将不胜感激!
发布于 2013-11-23 04:47:08
您需要在update查询中使用join,mysql支持多表UPDATE,正如Bill karvin建议的
UPDATE P JOIN E ON (P.PID = E.PID)
SET P.X=P.X+E.X, P.DX = E.X 发布于 2013-11-23 04:48:02
尝尝这个
update P set P.X= (select sum(x) from E where e.pid=p.pid)发布于 2013-11-23 13:02:40
@dianuj的答案是正确的语法。
但是你有一对多的关系。因此,一个PID具有2+值,不能保证哪个值被更新。
如果你不关心这个的话。@dianuj的查询是OK的。但是,只允许更新一个值。这个问题可能会对你有所帮助。UPDATE Syntax with ORDER BY, LIMIT and Multiple Tables
https://stackoverflow.com/questions/20154108
复制相似问题