2023年8月3日发(作者:)

pgsql批量更改update

批量更改 update

⼀般的⽅式:

UPDATE jo_table

SET product_number = #{} WHERE club_id = #{} AND product_sn =#{n} ⼀条记录update⼀次,这样性能很差。⼀句sql,性能更佳的⽅式:CASE WHEN THEN ELSE      UPDATE jo_table SET      product_number =      CASE id             WHEN #{} THEN product_number - #{}          ELSE product_number    END    WHERE id IN          #{}      记住⼀定要加上 else 的情况,如果不加的话,当when条件不符合时,会导致你要修改的字段被置空,是很危险的。其次,如果是多个字段更新: UPDATE jo_table SET

column1 = CASE id WHEN #{} THEN #{1} ELSE column1 END, column2 = CASE id WHEN #{} THEN #{2} ELSE column2 END

WHERE id IN #{} 另外:如果是要多个条件的话,可以拼接的⽅式来判断:如:update jo_table set number CASE

concat(字段1,字段2) WHEN

concat(#{obj.字段1},#{obj.字段2}) THEN #{} ELSE numberEND

2023年8月3日发(作者:)

pgsql批量更改update

批量更改 update

⼀般的⽅式:

UPDATE jo_table

SET product_number = #{} WHERE club_id = #{} AND product_sn =#{n} ⼀条记录update⼀次,这样性能很差。⼀句sql,性能更佳的⽅式:CASE WHEN THEN ELSE      UPDATE jo_table SET      product_number =      CASE id             WHEN #{} THEN product_number - #{}          ELSE product_number    END    WHERE id IN          #{}      记住⼀定要加上 else 的情况,如果不加的话,当when条件不符合时,会导致你要修改的字段被置空,是很危险的。其次,如果是多个字段更新: UPDATE jo_table SET

column1 = CASE id WHEN #{} THEN #{1} ELSE column1 END, column2 = CASE id WHEN #{} THEN #{2} ELSE column2 END

WHERE id IN #{} 另外:如果是要多个条件的话,可以拼接的⽅式来判断:如:update jo_table set number CASE

concat(字段1,字段2) WHEN

concat(#{obj.字段1},#{obj.字段2}) THEN #{} ELSE numberEND