用MySQL中的SUM()更新

时间:2009-03-17 11:26:09

标签: sql mysql

我的表:

ID  NAME COST  PAR  P_val  S_val
1   X    5     0    1      0
1   y    5     0    2      0
1   z    5     0    0      5
2   XY   4     0    4      4

我需要使用PAR更新SUM(S_val)字段,按ID分组:

  • 对于ID 1,PAR应为SUM(SVAL) WHERE ID=1
  • 对于ID 2,PAR应为SUM(SVAL) WHERE ID=2

预期的输出:

ID  NAME COST PAR  P_val  S_val
1   X    5     5   1      0
1   y    5     5   2      0
1   z    5     5   0      5     
2   XY   4     4   4      4

我如何UPDATE PAR值?

我的代码:

UPDATE Table_Name SET PAR = (SELECT SUM(S_val) FROM Table_Name WHERE ID=1) 
FROM   Table_Name

这不起作用。

3 个答案:

答案 0 :(得分:10)

很遗憾,您无法在MySQL中更新自己加入的表格。

您需要创建一个函数作为变通方法:

DELIMITER $$

CREATE FUNCTION `fn_get_sum`(_id INT) RETURNS int(11)
READS SQL DATA
BEGIN
      DECLARE r INT;
      SELECT  SUM(s_val)
      INTO    r
      FROM    table_name
      WHERE   id = _id;
      RETURN r;
END $$

DELIMITER ;

UPDATE  table_name
SET     par = fn_get_sum(id)

答案 1 :(得分:1)

尝试:

UPDATE Table_NAme SET PAR= summedValue
FROM   TAble_NAME t
JOIN (
  SELECT ID, SUM(S_val) as summedvalue 
  FROM TABLE_NAME GROUP BY ID
  ) s on t.ID = s.ID

答案 2 :(得分:1)

UPDATE Table_Name SET PAR = (SELECT SUM(S_val) FROM Table_Name WHERE ID=1) 
FROM   Table_Name

检查写作。删除“FROM Table_Name”行。

TRUE命令是:

UPDATE Table_Name SET PAR = (SELECT SUM(S_val) FROM Table_Name WHERE ID=1)