如何根据优先级更新记录的下拉列表?

时间:2019-02-08 06:56:34

标签: sql sql-update case-when

我有一个下拉列表,其中包含:

Rank1 
Rank2
Rank3
Rank4

和更新按钮。

我有以下记录

id    name    rank
1     chetan    1
2     ajay      3
3     kelly     2

我想以这样的方式编写更新SQL查询:

  • 当我要将chetan(rank1)的等级更新为rank2时,则不应更新。
  • rank3可以更新为rank1和rank2
  • rank4可以更新为rank1 rank2和rank3
  • rank2不应更新为rank3和rank4。

这就像是首选。较高级别的等级不应更新为较低的等级,而较低的级别可以更新为较高的等级。

我尝试使用Case when进行查询,但是无法正常工作:

 update cmp set cmp.rank = case when 'Rank4' Then update cmp set cmp.rank='Rank3'                             or cmp.rank='Rank2' or cmp.rank='Rank1' else cmp.rank end,
                cmp.rank=case when 'Rank3' Then update cmp set cmp.rank='Rank2' or cmp.rank='Rank1' else cmp.rank end,
                ...

还有其他解决方案吗?

1 个答案:

答案 0 :(得分:3)

这是一种方法

update t
   set t.rank='<passed_in_value_from_dropdown>'
 where '<passed_in_value_from_dropdown>' < t.rank
   and t.emp = '<passed_in_emp_number>'