首页 > 解决方案 > 如何在同一个表中的角色之间交换值

问题描述

可以说我有桌子:

ID    ROLE    NAME    TITLE
--    ----    ----    -----
10    DEF     John    Manager
11    UPD     Sam     Engineer
12    DEF     Jill    Lead
13    UPD     Ray     Engneer

我需要交换值并得到结果:

ID    ROLE    NAME    TITLE
--    ----    ----    -----
10    DEF     Sam     Engineer
11    UPD     John    Manager
12    DEF     Ray     Engineer
13    UPD     Jill    Lead

如何使用 Oracle 11g 完成此技巧 谢谢。

标签: sqloracle

解决方案


UPDATE the_table dst
FROM the_table src
SET dst.name = src.name
        , dst.title = src.title
WHERE dst.id IN (10,11)
AND src.id IN (10,11)
AND src.id <> dst.id
        ;

推荐阅读