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

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

    • 分享

      MYSQL聯(lián)合多表更新和刪除

       旭龍 2012-06-24
      多表更新
      在 MySQL 3.23 中,你可以使用 LIMIT # 來確保只有給定的記錄行數(shù)目被更改。 

      如果一個 ORDER BY 子句被使用(從 MySQL 4.0.0 開始支持),記錄行將以指定的次序被更新。這實際上只有連同 LIMIT 一起才有用。 

      從 MySQL 4.0.4 開始,你也可以執(zhí)行一個包含多個表的 UPDATE 的操作: 

      UPDATE items,month SET items.price=month.price
      WHERE items.id=month.id;

      注意:多表 UPDATE 不可以使用 ORDER BY 或 LIMIT。 



      多表刪除
      第一個多表刪除格式從 MySQL 4.0.0 開始被支持。第二個多表刪除格式從 MySQL 4.0.2 開始被支持。 

      僅僅在 FROM 或 USING 子句 之前 列出的表中的匹配記錄行被刪除。效果就是,你要以從多個表中同時刪除記錄行,并且同樣可以有其它的表用于檢索。 

      在表名后的 .* 僅僅是為了兼容 Access: 

      DELETE t1,t2 FROM t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

      or

      DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id

      在上面的情況下,我們僅僅從 t1 和 t2 表中刪除匹配的記錄行。 

      如果一個 ORDER BY 子句被使用(從 MySQL 4.0.0 開始支持), 記錄行將以指定的次序刪除。這實際上只有連同 LIMIT 一起才有用。示例如下: 

      DELETE FROM somelog
      WHERE user = 'jcole'
      ORDER BY timestamp
      LIMIT 1

      這將刪除匹配 WHERE 子句的,并且最早被插入(通過 timestamp 來確定)的記錄行。 

      DELETE 語句的LIMIT rows 選項是 MySQL 特有的,它告訴服務(wù)器在控制權(quán)被返回到客戶端之前可被刪除的最大記錄行數(shù)目。這可以用來確保一個特定的 DELETE 命令不會占用太長的時間。你可以簡單地重復(fù)使用 DELETE 命令,直到被影響的記錄行數(shù)目小于 LIMIT 值。 

      從 MySQL 4.0 開始,在 DELETE 語句中可以指定多個表,用以從一個表中刪除依賴于多表中的特殊情況的記錄行。然而,在一個多表刪除中,不能使用 ORDER BY 或 LIMIT。
      假設(shè)有兩個表,tab1,tab2,分別有產(chǎn)品名稱和產(chǎn)品價格,現(xiàn)在我想用tab2的價格替換tab1的價格,我寫的語句是Update tab1 set tab1.產(chǎn)品價格=tab2.產(chǎn)品價格 where tab1.產(chǎn)品名稱=tab2.產(chǎn)品名稱 
      結(jié)果出現(xiàn)錯誤,提示為:列前綴 'tab2' 與查詢中所用的表名或別名不匹配。請問應(yīng)該怎樣寫,

      SQL語句是不支持多表同時更新的。 

      應(yīng)該這樣寫 

      update tab1 set tab1.產(chǎn)品價格 = (select tab2.產(chǎn)品價格 from tab2 where tab2.產(chǎn)品名稱 = tab1.產(chǎn)品名稱) where tabl1.產(chǎn)品名稱 in (select tab2.產(chǎn)品名稱 from tab2) 


      后面的where tab1.產(chǎn)品名稱 in (select tab2.產(chǎn)品名稱 from tab2) 這句保證了如果tab1的產(chǎn)品在tab2沒有記錄時不會出錯。


      在 開發(fā)中,數(shù)據(jù)庫來回?fù)Q,而有些關(guān)鍵性的語法又各不相同,這是一件讓開發(fā)人員很頭痛的事情.本文總結(jié)了Update語句更新多表時在SQL Server,Oracle,MySQL三種數(shù)據(jù)庫中的用法.我也試了SQLite數(shù)據(jù)庫,都沒成功,不知是不支持多表更新還是咋的. 

      在本例中: 

      我們要用表gdqlpj中的gqdltks,bztks字段數(shù)據(jù)去更新landleveldata中的同字段名的數(shù)據(jù),條件是當(dāng)landleveldata 中的GEO_Code字段值與gdqlpj中的lxqdm字段值相等時進行更新. 

      SQL Server語法: 
      UPDATE 
                { 
                 table_name WITH ( < table_hint_limited > [ ...n ] ) 
                 | view_name 
                 | rowset_function_limited 
                } 
                SET 
                { column_name = { expression | DEFAULT | NULL } 
                | @variable = expression 
                | @variable = column = expression } [ ,...n ] 

            { { [ FROM { < table_source > } [ ,...n ] ] 

                [ WHERE 
                    < search_condition > ] } 
                | 
                [ WHERE CURRENT OF 
                { { [ GLOBAL ] cursor_name } | cursor_variable_name } 
                ] } 
                [ OPTION ( < query_hint > [ ,...n ] ) ] 

      SQL Server示例: 
      update a 
      set a.gqdltks=b.gqdltks,a.bztks=b.bztks 
      from landleveldata a,gdqlpj b 
      where a.GEO_Code=b.lxqdm 

      Oracle語法: 
      UPDATE    updatedtable 
            SET (col_name1[,col_name2...])= 
      (SELECT    col_name1,[,col_name2...]   
      FROM    srctable [WHERE where_definition]) 

      Oracel 示例: 
      update landleveldata a 
      set (a.gqdltks, a.bztks)= 
      (select b.gqdltks, b.bztks    from gdqlpj b 
          where a.GEO_Code=b.lxqdm) 

      MySQL語法: 
      UPDATE table_references 
            SET col_name1=expr1 [, col_name2=expr2 ...] 
            [WHERE where_definition] 

      MySQL 示例: 
      update landleveldata a, gdqlpj b 
      set a.gqdltks= b.gqdltks, 
      a.bztks= b.bztks 
          where a.GEO_Code=b.lxqdm

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多