将多个重复的MySQL查询转换为一个?

thr*_*416 2 mysql optimization sql-order-by

UPDATE some_table set rank=1 WHERE id=25
UPDATE some_table set rank=2 WHERE id=15
UPDATE some_table set rank=3 WHERE id=10
UPDATE some_table set rank=4 WHERE id=12
UPDATE some_table set rank=5 WHERE id=13
UPDATE some_table set rank=6 WHERE id=14
UPDATE some_table set rank=7 WHERE id=11
Run Code Online (Sandbox Code Playgroud)

如何将其转换为单个查询,因为我想不到一个?这些值id是顺序的.想象一下有图像的照片库,用户可以选择重新排列这些图像的序列.后端将根据用户定义的序列分配排名,并将在ORDER BY子句中使用.

Red*_*ter 8

update some_table 
set rank = case 
    when id = 25 then 1 
    when id = 15 then 2
    when id = 10 then 3 
    when id = 12 then 4
    when id = 13 then 5 
    when id = 14 then 6 
    when id = 11 then 7 
end
Run Code Online (Sandbox Code Playgroud)