小编典典

在MySQL中使用SUM()更新

sql

我的桌子:

ID名称费用PAR P_val S_val
1 X 5 0 1 0
1 Y5 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名称费用PAR P_val S_val
1 X 5 5 1 0
1年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

这是行不通的。


阅读 241

收藏
2021-05-05

共1个答案

小编典典

不幸的是,您无法在中更新与其自身联接的表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)
2021-05-05