这就是我的 table 的样子:
表名称:以下
+----+-------+-------+-------+-------+
| ID | user1 | user2 | user3 | user4 |
+----+-------+-------+-------+-------+
| 1 | user2 | user1 | user2 | user2 |
| 2 | user3 | user3 | user1 | user3 |
| 3 | user4 | user4 | user4 | user1 |
+----+-------+-------+-------+-------+
但是如果更改一个值,例如:
+----+-------+-------+-------+-------+
| ID | user1 | user2 | user3 | user4 |
+----+-------+-------+-------+-------+
| 1 | user2 | user1 | user2 | user2 |
| 2 | user3 | user3 | null | user3 |
| 3 | user4 | user4 | user4 | user1 |
+----+-------+-------+-------+-------+
如何使值user4
(以及低于该值的其他值)上升,并且中间不留有NULL值?
我希望输出为:
+----+-------+-------+-------+-------+
| ID | user1 | user2 | user3 | user4 |
+----+-------+-------+-------+-------+
| 1 | user2 | user1 | user2 | user2 |
| 2 | user3 | user3 | user4 | user3 |
| 3 | user4 | user4 | null | user1 |
+----+-------+-------+-------+-------+
我厌倦了这个查询:
UPDATE following t1
LEFT OUTER JOIN following t2 ON T1.user3+1=T2.user3 - 2
SET t1.user3 = t2.user3;
但我收到一些错误错误代码 1,292,SQLState 22007] 截断不正确的 DOUBLE 值:user2
最佳答案
我不知道mysql中的查询是如何编写的,但是这里有一个方法可以实现它。
拳头:
You show get the Min(ID) and Max(ID).
第二:
编写一个循环 For i = Min(ID) to Max(ID)
第三:
Update Following set user3 = (Select user3 from Following where ID = i+1) where ID = i
第四:
Set the last one row data to null or something else what you want init.
关于mysql - 如何在 MySQL 中向上移动列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43832661/