考虑一个表测试包含id和name的属性。
的值。
编号 |名字
1 |拉吉
2 |库玛
从上面的示例表中,我只知道 id,所以通过 Id 我需要交换名称,如下所示,
编号 |名字
1 |库玛
2 |拉吉
我们可以使用"With Query"从特定行交换两个值。使用"with",我们可以取回并使用它。
求解需求的查询,
with backup1 as (select name from test where id = 2), backup2 as (update test set name = (select name from test where id = 1) where id = 2)
update test set name = (select * from backup1) where id = 1;
在上面的查询中,backup1 包含其 id 为 2 的名称,之后使用更新查询,我取了其 id 为 1 的名称和
存储在名称字段中,其中 ID 为 2。
然后再次使用更新查询,我从备份中获取名称并存储在 id 为 1 的名称字段中,像这样我们可以交换。
update test
set name = case id
when 1 then (select name from test where id = 2)
when 2 then (select name from test where id = 1)
end
where id in (1,2);