在一个查询中更新多行

Update multiple rows in one query

我现在的 table:

id | count | group_id
1    1      employee   
2    2      employee   
3    3      employee   
4    4      employee   

我想要的:

id | count | group_id
1    4      employee   
2    3      employee   
3    2      employee   
4    1      employee 

我尝试过的

 UPDATE table SET count = 4 WHERE count = 1 AND group_id='employee';
 UPDATE table SET count = 3 WHERE count = 2 AND group_id='employee';
 UPDATE table SET count = 2 WHERE count = 3 AND group_id='employee';
 UPDATE table SET count = 1 WHERE count = 4 AND group_id='employee';

由于显而易见的原因,这不起作用,因为它逐行执行每个查询,所以我的结果是错误的。我想我正在寻找一种通过一个查询更新多个 table 的方法?

这个具体案例可以这样解决:

UPDATE table SET count = 5 - count
WHERE count between 1 and 4 AND group_id= 'employee';

更通用的解决方案,使用 CASE 表达式:

UPDATE table SET count = case count when 4 then 1
                                    when 3 then 2
                                    when 2 then 3
                                    when 1 then 4
                         end
WHERE count between 1 and 4 AND group_id = 'employee';