UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
Zauważ, że dla SELECT
bardziej wydajne byłoby użycie NOT IN
/ NOT EXISTS
składnia:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
Zobacz artykuł na moim blogu, aby uzyskać szczegółowe informacje na temat wydajności:
- Znajdowanie niekompletnych zamówień
:wydajność
LEFT JOIN
w porównaniu doNOT IN
Niestety, MySQL
nie pozwala na użycie tabeli docelowej w podzapytaniu w UPDATE
oświadczenie, dlatego musisz trzymać się mniej wydajnego LEFT JOIN
składnia.