乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      merge into 用法

       wghbeyond 2012-06-12

      MERGE語句是Oracle9i新增的語法,用來合并UPDATE和INSERT語句。通過MERGE語句,根據(jù)一張表或子查詢的連接條件對另外一張表進行查詢,連接條件匹配上的進行UPDATE,無法匹配的執(zhí)行INSERT。這個語法僅需要一次全表掃描就完成了全部工作,執(zhí)行效率要高于INSERT+UPDATE。

        */

        /*語法:

        MERGE [INTO [schema .] table [t_alias]

        USING [schema .] { table | view | subquery } [t_alias]

        ON ( condition )

        WHEN MATCHED THEN merge_update_clause

        WHEN NOT MATCHED THEN merge_insert_clause;

        */

        語法:

        MERGE INTO [your table-name] [rename your table here]

        USING ( [write your query here] )[rename your query-sql and using just like a table]

        ON ([conditional expression here] AND [...]...)

        WHEN MATHED THEN [here you can execute some update sql or something else ]

        WHEN NOT MATHED THEN [execute something else here ! ]

        /*

        我們還是以《sql中的case應用》中的表為例。在創(chuàng)建另兩個表fzq1和fzq2

        */

        --全部男生記錄

        create table fzq1 as select * from fzq where sex=1;

        --全部女生記錄

        create table fzq2 as select * from fzq where sex=0;

        /*涉及到兩個表關聯(lián)的例子*/

        --更新表fzq1使得id相同的記錄中chengji字段+1,并且更新name字段。

        --如果id不相同,則插入到表fzq1中.

        --將fzq1表中男生記錄的成績+1,女生插入到表fzq1中

        merge into fzq1 aa --fzq1表是需要更新的表

        using fzq bb -- 關聯(lián)表

        on (aa.id=bb.id) --關聯(lián)條件

        when matched then --匹配關聯(lián)條件,作更新處理

        update set

        aa.chengji=bb.chengji+1,

        aa.name=bb.name --此處只是說明可以同時更新多個字段。

        when not matched then --不匹配關聯(lián)條件,作插入處理。如果只是作更新,下面的語句可以省略。

        insert values( bb.id, bb.name, bb.sex,bb.kecheng,bb.chengji);

        --可以自行查詢fzq1表。

        /*涉及到多個表關聯(lián)的例子,我們以三個表為例,只是作更新處理,不做插入處理。當然也可以只做插入處理*/

        --將fzq1表中女生記錄的成績+1,沒有直接去sex字段。而是fzq和fzq2關聯(lián)。

        merge into fzq1 aa --fzq1表是需要更新的表

        using (select fzq.id,fzq.chengji

        from fzq join fzq2

        on fzq.id=fzq2.id) bb -- 數(shù)據(jù)集

        on (aa.id=bb.id) --關聯(lián)條件

        when matched then --匹配關聯(lián)條件,作更新處理

        update set

        aa.chengji=bb.chengji+1

        --可以自行查詢fzq1表。

        /*不能做的事情*/

        merge into fzq1 aa

        using fzq bb

        on (aa.id=bb.id)

        when matched then

        update set

        aa.id=bb.id+1

        /*系統(tǒng)提示:

        ORA-38104: Columns referenced in the ON Clause cannot be updated: "AA"."ID"

        我們不能更新on (aa.id=bb.id)關聯(lián)條件中的字段*/

        update fzq1

        set id=(select id+1 from fzq where fzq.id=fzq1.id)

        where id in

        (select id from fzq)


      TechTarget中國原創(chuàng)內容,原文鏈接:http://www./showcontent_35647.htm

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多