Oracle SQL:比较 2 列中的所有值并交换它们

Posted

技术标签:

【中文标题】Oracle SQL:比较 2 列中的所有值并交换它们【英文标题】:Oracle SQL: Compare all values from 2 columns and exchange them 【发布时间】:2011-07-15 14:50:12 【问题描述】:

我有一个 Oracle 数据库,其中有一个名为 myC 的表。在这张表中,我有几行,其中两个名为myCheight, myCwidth

我需要读取这些值并像在IF myCheight > myCwidth DO switch the values. 中一样比较它们

我试图从一行中读取值,但没有让它工作。我使用 Oracles Oracle SQL Developer。

这是我目前想出的:

set serveroutput on;
DECLARE 
  cursor h is select * from MyC;
  type htype is table of h%rowtype index by number;

  stage_tab htype;
  master_tab htype;
BEGIN 
  open h;
  loop  
      fetch h bulk collect into stage_tab limit 500;

      for i in 1 .. stage_tab.count loop
          master_tab(stage_tab(i).id) := stage_tabe(i);
      end loop;

      exit when h%notfound;
  end loop;
  close h;

end;

【问题讨论】:

【参考方案1】:

你不能这样做吗?

UPDATE myC
    SET myCheight = myCwidth,
        myCwidth = myCheight
    WHERE myCheight > myCwidth

【讨论】:

+1:同意。 SET myCheight = myCwidth 没有在 myCwidth = myCheight 之前完成,它们“似乎”同时发生。 +1。您还可以添加一个标志:“不要在家里(或 mysql)尝试这个”

以上是关于Oracle SQL:比较 2 列中的所有值并交换它们的主要内容,如果未能解决你的问题,请参考以下文章

迭代列中的时间戳行值并在 SQL 中执行 countif?

有没有更好的方法来编写这个处理比较两个不同列中的日期的 Oracle SQL?

循环遍历列中的数据框值并使用 SQL 将它们用作 FROM 子句

在 Oracle PL/SQL 中,当列的其余值相等时,我可以交换表中两个不同行的同一列的值吗?

将行与标题进行比较,然后在列中插入值并在 VBA 中进行重复检查

PSQL - 查找所有值并根据另一列中的非唯一值使其唯一