I have a statement that needs writing (with generic names for stuff, since this is for work) to update a column ‘updCol’ in table ‘tUpd’. tUpd also has a column ‘linkCol’ which is present in another table tOther. tOther has another column ‘idCol’.
My problem is to update the updCol value of rows in tUpd which correspond via linkCol to rows with a given idCol value.
One solution I think should work is the following;
update
tUpd
set
updCol = XXX
where exists (
select
idCol
from
tOther
where
tOther.linkCol = tUpd.linkCol
and tOther.idCol = MY_ID
)
However, I have worries that this approach will lead to poor performance, since I’ve been warned of sub-queries in relation to performance before – this sub-query will be run once for each row of tUpd, is this correct?
Has anyone got a better suggestion?
Important Update: my workplace avoids using SQL JOINs at all costs, preferring to join within the where clauses using, eg, where a.col = b.col. This is arguably rather awkward but allows a flexibility in especially logging which I don’t fully understand. SO, I’m looking for non-JOIN-using solutions 🙂
Its simply like this