I have a table where the value of a column can be NULL because those records have been created in the past. But now I would like to update those records. The tables are as follows:
TABLE 1
id | workflowId | workflowName | workflowVersion
1 | NULL | 'name-1' | 2
2 | NULL | 'name-1' | 3
3 | NULL | 'name-1' | 3
4 | NULL | 'name-1' | 3
5 | 2 | 'name-2' | 1
TABLE2
workflowId | workflowName | workflowVersion | target
1 | 'name-1' | 2 | 'master'
2 | 'name-1' | 3 | 'master'
3 | 'name-1' | 4 | 'something'
4 | 'name-2' | 1 | 'master'
It's a MySQL database.
In TABLE1 I would like to update all the NULL values for workflowId with the actual workflow with the result of the query:
SELECT workflowId
FROM table2 as t2, table1 as t1
WHERE t2.workflowName = t1.workflowName
and t2.workflowVersion = t1.workflowVersion
and t2.target = 'master'
Another thing to notice is that TABLE1 is much bigger than TABLE2, and executing that join for each record in TABLE2 has a big cost. Ideally, I would like also to reduce the computational costs in parsing all the records in TABLE1, see if they have correspondences in TABLE2 and to update them (as opposite of executing that join for each record in TABLE2).
However, as long as I can find something that works for my case I would be happy.
JOIN's