2015-09-08 137 views
1

甲骨文更新多列让我们假设我在一个场景中创建一个table--具有相同的价值

Create table t1 (aa varchar2(5),bb varchar2(5),cc varchar2(5)); 

插入的值在它 -

insert into T1 values ('a','b','c'); 
commit; 

现在,如果我想更新所有列具有相同的价值,那么我正在这样做 -

UPDATE T1 SET AA='x',BB='x',CC='x'; 

是否有任何其他方式通过此更新任务可以ac完成实时考虑可能会有相当多的列,并且必须一次更新相同的值?

我使用的是Oracle 11.2.0.1.0 - 64位生产

注意:通常有非常少的,其中相同的价值观正在为所有列更新的任何场景。但是,例如,考虑一个学校数据库和一个好学生在所有科目中都取得了10/10分。 :-)

谢谢。

+3

没有,为什么要呢?您只构建一次查询。 –

回答

3

有没有办法在纯SQL。您必须在UPDATE语句中明确列出所有

而且,相信使用好文本编辑器并不是一件困难的事情。使用元数据可以在几秒钟内获得列名称列表,您只需按照语法准备SQL语句即可。

如果你真的想这样做动态,那么你需要做的是在PL/SQL和(AB)使用EXECUTE IMMEDIATE。我个人不会建议它,除非你只是为了学习目的而做。

0

你可以试试这个:

UPDATE T1 SET AA='x',BB=AA,CC=AA; 
+0

欢迎来到堆栈溢出!感谢您的代码片段,它可能会提供一些有限的即时帮助。一个[正确的解释将大大提高其长期价值](/ meta.stackexchange.com/q/114762/206345)通过显示_why_这是一个很好的解决方案,并将使它对未来的读者更有用其他类似的问题。请[编辑]你的答案以添加一些解释,包括你所做的假设。 – Mogsdad