如何从 PSQL 表中的特定列交换两条记录

  • 本文关键字:交换 记录 两条 PSQL psql
  • 更新时间 :
  • 英文 :


考虑一个表测试包含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);

最新更新