下記のようなテーブルに対して、数時間ごとに(=定期実行で)あるuuidの行が選ばれて「xとyの値を更新する」、クエリを作成しています。
ただし、「更新したいuuidが複数ある + どのuuidの行に対して更新されるのかが明示的に示されるわけではない」ため、下記のCASE文のように個別具体的に更新したuuidを指定できない、という課題がございます。(下記のSQL文は、上記の意図の部分を抜粋したもの)
SQL
1SET x = 2 CASE 3 WHEN uuid = '80c1b' THEN 1 4 WHEN uuid = '975aa' THEN 3 5
やりたいことは(=表現したいクエリは)、下記のコードイメージのように「一つのクエリ文で、更新したい当該uuid行に対して、値をそれぞれ一度で更新したい。」というものなのですが、どのように書けば良いのか?ご教示いただけますでしょうか?
python
1uuid_chosen = ["80c1b", "975aa"] # 仮に、random.choice()の結果、0行目と2行目が選ばれたとする 2x_updated = [1, 3] # 0行目と2行目で、それぞれ、xが更新される値 3y_updated = [4, 6] # 0行目と2行目で、それぞれ、yが更新される値 4 5query = f""" 6 UPDATE table_name 7 SET x={x_updated}, y={y_updated} 8 WHERE uuids={uuid_chosen} 9"""
私の方でも一通り調べましたが、下記URLの回答のように、CASE文で明示的に変更したい値を指定する、という場面のケースしか見当たらず、途方に暮れております。。。
https://stackoverflow.com/questions/25674737/update-multiple-rows-with-different-values-in-one-query-in-mysql
面倒な質問で恐縮でございますが、何卒ご教示のほど、よろしくお願いいたします。