说我有一个由“group_id”和“group_rank”组成的“用户”表
我有一个包含所有群组及其群组信息的表格,包括ID。
我有一个所有组的所有级别的支持表,键为“group_id”和“sort_id”(sort_id所以我可以上下交换排名。)我没有奢侈的只是指的是排名唯一ID引用键sort_id只有它可以支持的许多值(1到50)
我意识到解决问题的最有效方法是让用户“group_rank”引用排名支持表的唯一ID,但不幸的是我没有那么奢侈,所以它必须引用“sort_id”为基础来自rank / users表的“group_id”。
现在,棘手的部分,我想换掉两个排名的排序位置。我已经通过交换查询(how to update swap values of two rows with single query)
有效地完成了这项工作但是,我想对受影响的所有“用户”也这样做。有没有比使用group_id匹配获取所有用户并通过它们进行处理更简单的方法然后创建2个新查询来更新其单独的新rank_id?
答案 0 :(得分:0)
谢谢JohnLBevan,我确实在寻找CASE,没想到我真正想要的问题,并且在我脑海中过于复杂。感谢您的帮助。
供参考(未来使用的示例参数);
UPDATE `users` SET `rank_id` = CASE WHEN `rank_id` = '1' THEN 2 WHEN `rank_id` = '2' THEN 1 ELSE `rank_id` END WHERE `group_id` = '43'