I am trying to update a table named qc only when first.value is equal to second.value.
An UPDATE query without FROM updates every value which is not what I want. I tried this, but it's still not working:
UPDATE qc
SET value = 
CASE 
   WHEN value < 125 THEN 
   CASE WHEN material LIKE 'Beton%' 
   THEN 40
   ELSE
   (CAST(value - 40 AS DECIMAL(5,2)))
   
   END
   WHEN value >= 125 AND value <= 150 THEN
   CASE WHEN material LIKE 'Beton%'
   THEN 50
   ELSE
   (CAST(value - 50 AS DECIMAL(5,2)))
   END
   
   ELSE 
   CASE WHEN material LIKE 'Beton%'
   THEN 80
   ELSE
   (CAST(value - 80 AS DECIMAL(5,2)))
   END
END
FROM (SELECT location, value
      FROM qc
      LEFT JOIN designlocation dl ON qc.designlocationid = dl.designlocationid
      WHERE material LIKE 'Beton_v%' AND value != '') first
   , (SELECT location, value
      FROM qc
      LEFT JOIN designlocation dl ON qc.designlocationid = dl.designlocationid
      WHERE material LIKE '%(3rd pass)%' AND value !='') second
WHERE first.location = second.location AND first.value = second.value;
 
     
    