問題:左結合(または別の高速解法)と一致しない行を更新したいと思います。 最初の目標:状態= 0で、mytable2と一致する(XOR!)列 "a"またはmytable2と一致する列 "b"( "a"と "b"は一致しないはずです)を持つmytable1のレコードを更新します。 。両方のテーブルのレコードをstate = 5に設定します。一致しなかった左の結合行を更新してください
私が試した(そして失敗):
update mytable1 as t1
left join mytable2 as t2 on (t1.a=t2.a and t1.b=t2.b)
set t1.state=5,t2.state=5
where t1.state=0 and t2.state=0 and t2.a is null;
あなたは私が一致しないレコードを更新することができるように、私もその行を更新し、両方の値に一致するすべてのレコードを接続しようとしました見ることができるようにmytable2で一致しませんでした。 mytable1の行は更新されますが、table2の行は更新されません。私は左の結合と一致する行を更新することができますが、パフォーマンスのヒットとなる行の99%です(私はこの質問をしましたので比較することはできません)。
ありがとうございます。
t2のどの行も一致しない場合、どのようにt2.stateを更新しますか? – Benoit
はい左の結合と一致しないが、まだ状態= 0(両方の表で!)の行はすべて更新を取得する必要があります。 state!= 0の行はどちらのテーブルでも更新されません。助けてくれてありがとう、Benoit。 – AndrewBourgeois