0

我发布了另一个类似的问题。
所以还是有更多的问题。
就是这样,我希望能够更新列位置。
按照下面的例子。这是更新前

+----+--------------+----------+
| id | question     | position |
+----+--------------+----------+
|  1 | Question 1   |        1 |
|  2 | Question 2   |        2 |
|  3 | Question 3   |        3 |
|  4 | Question 4   |        4 |
+----+--------------+----------+

因此,如果我将行 id = 2 的列位置从 2 更新为 4,我希望按如下方式组织。这是更新后

+----+--------------+----------+
| id | question     | position |
+----+--------------+----------+ 
|  1 | Question 1   |        1 | 
|  2 | Question 2   |        4 |
|  3 | Question 3   |        2 | 
|  4 | Question 4   |        3 |
+----+--------------+----------+

我尝试了很多东西,但没有任何效果。
因此,如果有人可以帮助我,将不胜感激。
非常感谢。

4

1 回答 1

0

你想做这样的事情:

update t join
       (select position from t where id = 2) t1
       on t.position >= t1.position
    set position = (case when id = 2 then 4 else position - 1 end)

也就是说,从所有大于 1 的位置中减去“1” id = 2。并将该位置设置为“4”。

于 2013-07-03T02:01:46.703 回答