我想交换2行的值,如下所示
+----+--------+------+-------+
| id | p_name | p_no | ms_no |
+----+--------+------+-------+
| 1 | S_1 | 1 | 1 |
| 2 | S_2 | 2 | 1 |
| 3 | S_3 | 3 | 2 |
| 4 | S_4 | 4 | 2 |
+----+--------+------+-------+
我想将ms_no1交换为2,其中p_no1,3结果应如下所示。
+----+--------+------+-------+
| id | p_name | p_no | ms_no |
+----+--------+------+-------+
| 1 | S_1 | 1 | 2 |
| 2 | S_2 | 2 | 1 |
| 3 | S_3 | 3 | 1 |
| 4 | S_4 | 4 | 2 |
+----+--------+------+-------+
我试过一些方法,但没有成功。
3条答案
按热度按时间nszi6y051#
fiddle
在SET子句中,
=
右侧的所有值都是初始值,而不是在此SET的前几行上计算的值。而不是用户定义的变量。
6jygbczu2#
您可以使用
where
子句查找适当的行(p_no
为1或3,ms_no
为1或2),并使用case
表达式在它们之间进行交换:ggazkfy83#
使用更新联接:
这种方法使交换的记录与原始表中的每个
p_no = 1
和p_no = 3
记录对齐,然后,我们只需要用连接表中的值覆盖ms_no
的值。