UPDATE with SUM() in MySQL

前端 未结 3 535
攒了一身酷
攒了一身酷 2020-12-11 06:34

My table:

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


        
相关标签:
3条回答
  • 2020-12-11 06:49
    UPDATE Table_Name SET PAR = (SELECT SUM(S_val) FROM Table_Name WHERE ID=1) 
    FROM   Table_Name
    

    Check writing. delete "FROM Table_Name" row.

    TRUE command is:

    UPDATE Table_Name SET PAR = (SELECT SUM(S_val) FROM Table_Name WHERE ID=1)
    
    0 讨论(0)
  • 2020-12-11 06:54

    Try:

    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
    
    0 讨论(0)
  • 2020-12-11 07:14

    Unfortunately, you cannot update a table joined with itself in MySQL.

    You'll need to create a function as a workaround:

    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)
    
    0 讨论(0)
提交回复
热议问题