MySQLではX(ここで、ZからYを選択)に挿入するより高速な代替手段はありますか?

ビクター:
table_a

user_id  score  
1        10     
2        10      
3        10      
5        43      
6        43      
9        20      
10       42    



table_b

user_id  flag
1        0
2        0
3        0
4        1
5        1
6        0 
7        1

上記の場合、どのように私は読み込むことができますtable_b.flagへの1場合user_idからtable_a(持っていますかscore > 40)?

ニック:

あなたは、マルチテーブルを使用することができますUPDATEあなたが望む結果を得るために:

UPDATE table_b b
JOIN table_a a ON a.user_id = b.user_id AND a.score > 40
SET b.flag = 1

JOIN条件手段においてのみ行ことがtable_b、対応する場所user_idでは、table_a持っているscore > 40と、そのフラグが設定されているであろう1あなたがにも設定されたフラグにしたい場合は0該当する場合はscore <= 40、あなたがに値などの条件を使用することができますSET(として以来、MySQLの扱いブール値1または0数値コンテキストで):

UPDATE table_b b
JOIN table_a a ON a.user_id = b.user_id
SET b.flag = a.score > 40

あなたのサンプルデータでは、内の結果はtable_b同じです。

user_id     flag
1           0
2           0
3           0
4           1
5           1
6           1
7           1

dbfiddleのデモ

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=387369&siteId=1