Sql 如何在同一个表中的角色之间交换值
假设我有一张桌子:Sql 如何在同一个表中的角色之间交换值,sql,oracle,Sql,Oracle,假设我有一张桌子: ID ROLE NAME TITLE -- ---- ---- ----- 10 DEF John Manager 11 UPD Sam Engineer 12 DEF Jill Lead 13 UPD Ray Engneer 我需要交换值并得到结果: ID ROLE NAME TITLE -- ---- ---- --
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实现这一技巧
谢谢。更新表dst
从表src
设置dst.name=src.name
,dst.title=src.title
其中dst.id在(10,11)中
和(10,11)中的src.id
和src.id dst.id
;
添加更多包含示例数据的行,并相应调整结果。您只需要交换这两个名称,还是需要交换多个实例/多个名称?有姓氏和更多列,但我认为基本相同。ID是唯一的。所以角色仍然存在,但名称可能会改变。问题是,为什么要交换第10行和第11行中的值,而不是第10行和第12行、第13行或第14行中的值?好吧,你可以用13换10,用12换11?你确定这是有效的Oracle语法吗?不,我不是。(但很容易改变)
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
;