mysql - 将多个重复的 MySQL 查询变成一个?

标签 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

我怎么能把它变成一个单一的查询,因为我想不出一个? id 的这些值是按顺序排列的。想想一个有图像的照片库,用户可以选择重新排列这些图像的顺序。后端将根据用户定义的顺序分配排名,并将在 ORDER BY 子句中使用。

最佳答案

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

关于mysql - 将多个重复的 MySQL 查询变成一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295363/

相关文章:

mysql - 使用触发器修改现有记录中的值

php - 如何使用 PHP 动态生成 HTML 页面?

mysql - 出现重复主键错误

c++ - 哪个处理器的成本更高?

optimization - 使用类型声明进行优化的 Common Lisp 最佳实践

Mysql:1 个表定期崩溃

jquery - 为什么我的 jquery td click 事件在 Chrome 上 react 慢?

Mysql order by and group错误

mysql - SQL:如何使用 DISTINCT 保持行顺序?

左连接的 Laravel 排序结果