在 SQL (Oracle) 中使用条件交换列
Posted
技术标签:
【中文标题】在 SQL (Oracle) 中使用条件交换列【英文标题】:Swap columns with a condition in SQL (Oracle) 【发布时间】:2022-01-01 15:12:20 【问题描述】:我有一个包含两列的表格 - x
和 y
。在我的输出表中,x
应始终小于 y
。
如何兑换?我尝试了更新,但它不起作用并引发运行时错误。有人能给出正确的语法吗?
Update table t1 set x = (case when x<y then x else y end),
set y = (case when x<y then y else x end)
【问题讨论】:
【参考方案1】:使用WHERE
子句仅更新实际需要更新的行:
UPDATE tablename
SET x = y,
y = x
WHERE x > y;
【讨论】:
【参考方案2】:您的语法错误。 UPDATE
语句中不应有“TABLE”。
你有两次SET
,只需要一次
Update t1 set x = (case when x<y then x else y end),
y = (case when x<y then y else x end)
【讨论】:
以上是关于在 SQL (Oracle) 中使用条件交换列的主要内容,如果未能解决你的问题,请参考以下文章