oracle中的UPDATE FROM 解決方法

ORACLE中沒有類似SQL SERVER的update from功能

一個解決的辦法是

/* Formatted on 2004/10/26 11:15 (Formatter Plus v4.5.2) */
UPDATE tablea a
   SET a.fieldforupdate =
            (SELECT b.fieldsource
               FROM tableb b
              WHERE a.keyfield = b.keyfield)
 WHERE EXISTS (
              SELECT b.fieldsource
                FROM tableb b
               WHERE a.keyfield = b.keyfield)



例子

表text

  fielda                fieldb               fieldc
  1                2004-1-1        2004-2-1 
  2                2004-2-2        2004-3-1
  3                2004-3-1        2004-4-1

如果要根據記錄2的b字段值更新記錄1的c字段值則可以使用如下sql

/* Formatted on 2004/10/26 11:25 (Formatter Plus v4.5.2) */
UPDATE text a
   SET a.fieldb = (SELECT b.fieldb
                     FROM text b
                    WHERE a.fielda = b.fielda
                      AND b.fieldb > a.fieldb
                      AND   b.fieldb
                          - a.fieldb <= 35)
 WHERE EXISTS ( SELECT b.fieldb
                  FROM text b
                 WHERE a.fielda = b.fielda
                   AND b.fieldb > a.fieldb
                   AND   b.fieldb
                       - a.fieldb <= 35)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章