【问题标题】:How to copy one column data into another column in oracleoracle如何将一列数据复制到另一列
【发布时间】:2015-03-21 05:36:32
【问题描述】:

我想将一列数据复制到另一列中 替换旧数据。例如:

表 1

Column1    Column2 

SONY       Sony  Desc
Lenovo     Lenovo Desc 
Nokia      Nokia Desc 

我想要类似的结果

Column 1        column2
SONY            Sony  Desc
Sony  Desc
Lenovo          Lenovo Desc 
Lenovo Desc      
Nokia            Nokia Desc 
Nokia Desc

我试过我的查询不匹配

Update table1 set column1 = column2

【问题讨论】:

  • 是的,我已经尝试过,但我没有得到它上面的结果,因为我需要将 EXTJS 树面板列 1 SONY 显示为父节点,将索尼 Desc 显示为子节点(如果有任何替代方法可以实现) ?
  • “是”不是对“您尝试过什么”问题的回答。更新您的问题以包含您拥有的代码,该代码不起作用。也包括该代码的(不正确的)结果。请勿在修改后的问题中添加 EditUpdate 之类的内容。本站有编辑历史,需要查看差异的可以从那里获取信息。
  • 是的,你的权利我已经尝试了很多方法,但我仍然无法得到我预期的结果?我尝试过但不符合我的要求的另一个查询:合并列:选择 column1 || table1中的column2

标签: oracle


【解决方案1】:

如果要添加行,则需要INSERT 而不是UPDATE。此语句将添加具有从表中另一行的 column2 复制的 column1 值和从序列 (seq_export_config_id) 中获取的主键 (export_config_id) 值的新行:

INSERT INTO table1
(export_config_id, column1)
SELECT seq_export_config_id.NEXTVAL, column2 FROM table1;

【讨论】:

  • 我无法插入空列数据请告诉我如何在不允许空值的情况下插入数据?
  • @sameer,你需要过滤掉NULL值,看我的回答。
  • 'SQL 错误:ORA-00001:违反了唯一约束 (ECS_HIS.PK_T_KPI_AUTO_EXPORT_CONFIG)',因为我没有序列列。
  • 在创建完序列列之后。我可以通过排序插入吗?
  • @sameer,你可以使用例如ORDER BY column2SELECT 中,如果序列顺序需要匹配新插入行的column2 值的字母顺序。但是,您通常只在查询表时才担心对数据进行排序,而不是在向表中插入行时。
【解决方案2】:

如果column1 具有NOT NULL 约束,或者如果它具有主键约束,则您将无法插入 NULL 值。您需要过滤掉 NULL 值:

INSERT INTO table1 (column1)
  SELECT column2 
   FROM table1 
  WHERE column2 IS NOT NULL;

【讨论】:

  • 感谢您对我的回应,但 column1 作为可空是,column2 作为可空是。使用上述查询后,我仍然无法插入数据?**SQL 错误:ORA-01400:无法将 NULL 插入("ECS_HIS"."T_KPI_AUTO_EXPORT_CONFIG"."EXPORT_CONFIG_ID")** 01400. 00000 - “无法将 NULL 插入 (%s)” *原因:尝试将 NULL 插入先前列出的对象。 *操作:这些对象不能接受 NULL 值。
  • 我也参考了这个链接:stackoverflow.com/questions/20817280/…
  • @sameer,您的表中是否有会导致此问题的触发器?
  • 对不起,我没有创建任何触发器?如果有任何替代方法,我仍然无法插入我的数据?
  • @sameer,描述这两个表。
猜你喜欢
  • 2021-11-28
  • 2016-03-15
  • 2016-08-28
  • 2018-12-27
  • 1970-01-01
  • 2019-01-11
  • 2011-09-12
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多