UPDATE t1
LEFT JOIN
t2
ON t2.id = t1.id
SET t1.col1 = newvalue
WHERE t2.id IS NULL
SELECT
の場合は注意してください NOT IN
を使用する方が効率的です /NOT EXISTS
構文:
SELECT t1.*
FROM t1
WHERE t1.id NOT IN
(
SELECT id
FROM t2
)
パフォーマンスの詳細については、ブログの記事を参照してください:
- 不完全な注文の検索
:
LEFT JOIN
のパフォーマンスNOT IN
と比較して
残念ながら、MySQL
UPDATE
のサブクエリでターゲットテーブルを使用することはできません ステートメント、それがあなたがより効率の悪いLEFT JOIN
に固執する必要がある理由です 構文。