如何更新基于优先级记录的下拉列表?

问题描述 投票:2回答:1

我有一个包含一个下拉列表:

Rank1 
Rank2
Rank3
Rank4

和更新按钮。

我有以下的记录像

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

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

  • 当我想更新阿赫亚(等级-1)的排名,以秩2那么它不应该被更新。
  • rank3可更新等级-1和秩2
  • 秩4可以更新排名1秩2和秩3
  • 秩2不应该更新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,
                ...

对此有任何其他的解决办法?

sql sql-update case-when
1个回答
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>'
© www.soinside.com 2019 - 2024. All rights reserved.