2016-12-05 3 views
0

このクエリで何が問題になっていますか?フィールドが等しくない場合、mysqlは別のテーブルから更新します

update TA,TB 
set TA.change = 1,TA.value = TB.value 
where 
TA.name = TB.name and TA.value <> TB.value 

私はTB

+0

あなたが持っている問題は何ですか? –

+0

名前はuniqeであり、値はNULLではありません。 同じ名前と異なる値を持つ行を更新したいのですが、クエリは実行しません – Ali

答えて

0

の値の変更があなたのクエリが大丈夫であるとき、TBからTAを更新します。私は、明示的なjoinでそれを記述します。

update TA join 
     TB 
     on TA.name = TB.name 
    set TA.change = 1, 
     TA.value = TB.value 
where TA.value <> TB.value; 

あなたのアカウントにNULL値を取る必要があるかもしれません:

update TA join 
     TB 
     on TA.name = TB.name 
    set TA.change = 1, 
     TA.value = TB.value 
where not (TA.value <=> TB.value); 
+0

ありがとうございますが、 "on"のためにエラーが発生しています。 – Ali

関連する問題