【问题标题】:How to make a update query in Oracle using "With" statement shorter?如何使用“With”语句在 Oracle 中进行更新查询?
【发布时间】:2014-03-16 11:45:01
【问题描述】:

我正在构建一个更新查询。

但由于无用的重复“With”语句似乎很混乱。

你有什么想法让它更短吗?

示例查询如下。

UPDATE TABLE1
   SET C1 = (
              WITH W_VIEW AS
              (
                SELECT *
                  FROM TABLE1
              )
              SELECT C_VALUE
                FROM W_VIEW
               WHERE ROWNUM = 1

            ) 

 WHERE C2 IN (

              WITH W_VIEW AS
              (
                SELECT *
                  FROM TABLE1
              )
              SELECT C2_VALUES
                FROM W_VIEW
               WHERE STH < 10

             );

我只想使用一次 W_VIEW。

例如,

WITH W_VIEW AS
(
    SELECT *
      FROM TABLE1
)
UPDATE TABLE1
   SET C1 = (SELECT C_VALUE FROM W_VIEW WHERE ROWNUM = 1) 
 WHERE C2 IN (SELECT C2_VALUES FROM W_VIEW  WHERE STH < 10)

。 如果该查询有效,我会很高兴:)

【问题讨论】:

    标签: sql oracle sql-update with-statement


    【解决方案1】:

    也许这个:

    WITH w_view 
         AS (SELECT * 
             FROM   table1) 
    UPDATE (SELECT * 
            FROM   table1 
            WHERE  c2 IN (SELECT c2_values 
                          FROM   w_view 
                          WHERE  sth < 10)) 
    SET    c1 = (SELECT c_value 
                 FROM   w_view 
                 WHERE  rownum = 1) 
    

    【讨论】:

    • 谢谢!但是会发生缺少选择关键字错误 ORA-00928。 ;-
    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多