I am trying to update some fields based on their occurence. If they only occur one time, I am updating some status field.
My current code is as follows:
You should join your tables in the subselect. It is possible to use 'in', but in your case I would use exists:
UPDATE table1 x
SET statusField = 1
WHERE exists (
SELECT null
FROM table1
WHERE x.someID = someID
GROUP BY someID
HAVING COUNT(*) = 1
)
For better performance I would use this script instead (sqlserver-2008+):
;WITH x as
(
SELECT rc = count() over (partition by someID), statusField
FROM table1
)
UPDATE x
SET statusField = 1
WHERE rc = 1