Начните с очень подробной версии, просто для ясности:
UPDATE TableA
SET multiple = 'YES'
WHERE match in (
-- isolate the multiples
SELECT match from (
-- count the matches
SELECT count(*) as c, match from TableB
GROUP BY match ) x
WHERE c > 1
)
С помощью предложения HAVING вы можете изменить это ...
SELECT match from (
SELECT count(*) as c, match from TableB
GROUP BY match ) x
WHERE c > 1
... наэто:
SELECT match from TableB
GROUP BY match
HAVING count(*) > 1
Итак, теперь у нас есть:
UPDATE TableA
SET multiple = 'YES'
WHERE match in (
SELECT match from TableB
GROUP BY match
HAVING count(*) > 1
)
Я уверен, что это можно сделать более компактным, но меня лично смущают UPDATE
утверждения, содержащие неочевидныеJOIN
предложения, особенно среди ночи, когда мне звонят, что «база данных не работает!»
Не заставляй меня думать относится и к кодированию.