日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
同表內(nèi)記錄間的DB2更新語句

下面為您介紹的DB2更新語句用于同表內(nèi)記錄間的更新操作,該DB2更新語句供您參考,希望對您學(xué)習(xí)DB2更新語句方面能有所幫助。

為滎陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及滎陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站建設(shè)、滎陽網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

兩個DB2更新語句,用于更新同表內(nèi)符合條件的其它記錄。數(shù)據(jù)結(jié)構(gòu)如下:

metadata_xt(id, subject_id, other_courseware_name, me_author, me_title, me_key, me_abstract)

其中id***;me_title也應(yīng)***,但沒有約束,因此有可能重復(fù)(但即便重復(fù),同一me_title值的不同記錄的其他字段必定相同,因此可以判作冗余,也即可以被過濾);其它均不***。所有字段非空。語句用于匹配的項為me_title,其模式可能為如下幾個:
'第__講 精簡版', '第_講 精簡版', '第__講 %' and !contains '精簡版'; '第_講 %' and !contains '精簡版'; 其它不以'第'開頭的模式。

語句如下,主要目的是將me_title為'第__講 精簡版'的記錄以me_title為僅相同開頭('第__講...')的另一條源記錄更新。更新后記錄為:
me_title:源記錄的me_title + ' (精簡版)';
其它字段:源記錄的相應(yīng)字段值。

功能見注釋:

-- 首先更新用于匹配的關(guān)鍵項之外的字段
UPDATE DB2ADMIN.metadata_xt AS a
   SET (me_key,       -- DB2中可以通過這種方式同時為多個字段賦值,具體緣由可能與values語句有關(guān),
       me_abstract,     -- 但是不確定,有待查證。
       subject_id,
       me_author
       ) =
         -- 這里通過distinct保證返回***一條記錄。子句中的where可以保證返回***的me_title值,但是
          -- 由于之前提到的有可能出現(xiàn)的me_title重復(fù)的錯誤,需要在此處確保相同me_title僅返回一條記錄。
          (SELECT distinct me_key, me_abstract, SUBJECT_ID, me_author
             FROM DB2ADMIN.metadata_xt AS b
            WHERE other_courseware_name = '房屋建筑學(xué)' -- 以該字段分組,每次update語句更新一組。
        AND b.ME_TITLE like '第%'         -- 忽略me_title不以'第'開頭的其它記錄
              AND                   -- 此處進行兩條記錄之間的me_title模式匹配
         ( left (b.ME_TITLE, 6) = left (a.ME_TITLE, 6)   -- 匹配前六個字符,如'第01講...'或'第55講...'
         OR        -- 若兩條記錄不都符合模式'第__講%',則源記錄應(yīng)為模式'第_講%',按如下匹配
          ( substr(a.ME_TITLE,3,1)='0' and substr(a.me_title, 4,3)=substr(b.ME_TITLE, 3, 3) )
         )
              AND b.ME_TITLE <> a.ME_TITLE)       -- 要求兩字段值不同,避免同記錄的更新
WHERE other_courseware_name = '房屋建筑學(xué)'   -- 限定要更新記錄的分組
   AND me_title LIKE '第__講 精簡版'            -- 這是要更新的記錄的模式
   AND EXISTS     -- 該語句非常重要,可以避免將無對應(yīng)源記錄的“精簡版”記錄的相應(yīng)字段賦值為null。
          (SELECT 1      -- 僅當(dāng)有匹配的源記錄時返回1
             FROM DB2ADMIN.metadata_xt AS c
            WHERE c.OTHER_COURSEWARE_NAME = '房屋建筑學(xué)'     -- 同樣進行限定,以下就與上面的子查詢完全相同了,目的也無二致
        AND c.ME_TITLE like '第%'
        AND
         ( left (c.ME_TITLE, 6) = left (a.ME_TITLE, 6)
         OR
          ( substr(a.ME_TITLE,3,1)='0' and substr(a.me_title, 4,3)=substr(c.ME_TITLE, 3, 3) )
         )
              AND c.ME_TITLE <> a.ME_TITLE);
      
-- 將所有其它字段更新完之后,再運行一遍,更新關(guān)鍵項:me_title。
UPDATE DB2ADMIN.metadata_xt AS a
   SET me_title =
          (SELECT distinct me_title
             FROM DB2ADMIN.metadata_xt AS b
            WHERE other_courseware_name = '房屋建筑學(xué)'
        AND b.ME_TITLE like '第%'
              AND
         ( left (b.ME_TITLE, 6) = left (a.ME_TITLE, 6)
         OR
          ( substr(a.ME_TITLE,3,1)='0' and substr(a.me_title, 4,3)=substr(b.ME_TITLE, 3, 3) )
         )
              AND b.ME_TITLE <> a.ME_TITLE) || ' (精簡版)' -- 關(guān)鍵項的修改:源me_title + ' (精簡版)'
WHERE other_courseware_name = '房屋建筑學(xué)'
   AND me_title LIKE '第__講 精簡版'
   AND EXISTS
          (SELECT 1
             FROM DB2ADMIN.metadata_xt AS c
            WHERE c.OTHER_COURSEWARE_NAME = '房屋建筑學(xué)'
        AND c.ME_TITLE like '第%'
        AND
         ( left (c.ME_TITLE, 6) = left (a.ME_TITLE, 6)
         OR
          ( substr(a.ME_TITLE,3,1)='0' and substr(a.me_title, 4,3)=substr(c.ME_TITLE, 3, 3) )
         )
              AND c.ME_TITLE <> a.ME_TITLE);


標(biāo)題名稱:同表內(nèi)記錄間的DB2更新語句
標(biāo)題來源:http://www.5511xx.com/article/dhdiseg.html