skip to Main Content

I am trying to update multiple values at the same time,

Table values

UniqueRef, Name
1101, AA01
1102, AA02
1103, AA03

I want to update UniqueRef for all of 1101, 1102 and 1103 to different values e.g
1101 will be updated to 1101AB ect

how can I do this in bulk than one at a time?

2

Answers


  1. Do it in a single UPDATE statement:

    Seems like you need to update UniqueRef in a single pattern. So use following statement:

    UPDATE YourTable SET name = CONCAT(UniqueRef, 'AB');
    

    This will update all rows – in case you need to limit the scope use WHERE statement and define appropriate condition.

    In case you need to use different values for each row use CASE statement in

    UPDATE YourTable 
    SET name = 
      CASE
        WHEN UniqueRef = 1101 THEN 'newValue' 
        WHEN UniqueRef = 1102 THEN 'anotherNewValue' 
        {nextStatements} 
        ELSE name
      END
    ;
    
    Login or Signup to reply.
  2. The scalable solution is to use UPDATE with a JOIN on a source for the new values (usually another table, but it can be an online view, such as below)

    UPDATE
      example
    INNER JOIN
    (
      SELECT 1101 AS id, 'X' AS new_name
      UNION ALL
      SELECT 1102, 'Y'
    )
      AS update_map
        ON update_map.id = example.uniqueRef
    SET
      example.name = update_map.new_name
    

    Demo : https://dbfiddle.uk/g71hwuYG

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search