1. 程式人生 > >Oracle用一個表的列更新另一個表對應記錄的列,一不小心有欄位就更新為空了

Oracle用一個表的列更新另一個表對應記錄的列,一不小心有欄位就更新為空了

剛開始我在網上搜索的用的下面這種方法:

    update tbl1 a

  set (a.col1, a.col2) = (select b.col1, b.col2

  from tbl2 b

  where a.key = b.key)

然後,使用後把我坑慘了。我直接在伺服器上做的操作,做完後,居然登入不上系統了。後來才發現,有一個欄位的值因為這個語句更新為空了,而登入時是用了檢視的。這個欄位正好是檢視連線表時要用到的。好多使用者反應也登入不上了,真是悲慘啊!

後來百度才知道原來是這個原因,如果 tbl1.key 的值在 tbl2.key 中沒有此值時,這個更新的兩個欄位 tbl1.col1 和 tbl1.col2 欄位會被更新為空值(null)。

速度借鑑大神的寫法:

   update tbl1 a

  set (a.col1, a.col2) = (select b.col1, b.col2

  from tbl2 b

  where a.key = b.key)

  where a.key in(select key from tbl2)//這一句是相當的關鍵啊。

特別感謝:http://www.codesky.net/article/201004/167714.html這位大神!

記錄下這個問題,供以後參考,也供大家使用。


相關推薦

Oracle一個更新一個對應記錄一不小心更新

剛開始我在網上搜索的用的下面這種方法:     update tbl1 a   set (a.col1, a.col2) = (select b.col1, b.col2   from tbl2 b   where a.key = b.key) 然後,使用後把我

物件中某一個的值時不進行展示

String index=""; for (int i = 0; i < statEmails.size(); i++) { String string = statEmails

oracle 一個的多個更新一個對應的多個

update wx_weather a set (a.high_l,a.low_l)= (select high_l, low_l from wx_original_weather b where a

mysql一個更新一個

document eat sid select 更新 dal mysq service req 寫法: UPDATE Document, ObservationRequestSET Document.CreateOrganizationName = ObservationR

Oracle 一個表字段更新一個表字段三種方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

sql server 一個的資料去更新一個

      SQL SERVER 資料庫操作中,經常會遇到將一個表的資料複製到另一個表的情況。一種情況是將一個表中的資料(全部或者部分欄位)插入另一個空表中;另一種情況是將一個表中的部分欄位更新到另一個非空的表中。   &nbs

如何oracle 某一使用者授予查詢一個使用者某張的許可權以及更新一使用者中某些

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

sql update 一個更新一個

UPDATE  a  SET a.areacode=b.areacode FROM [dbo].[T_Mid_AirPoll] a ,[dbo].[T_Bas_AirStation] b   WHER

Oracle中用一個的資料更新一個的資料

Oracle中用一個表的資料更新另一個表的資料   有下面兩個表:將表tab1中id值與和表tab2中id值相同的行的val更新為tab2中val的值。   select * from tab1;   select * from tab2   最容易犯的錯誤是:u

Oracle批量更新】根據一個批量更新一大的方法比較

【問題】現在有兩個千萬級別的結構相同資料不同資料表T_SMS_PHONENO(目的表),T_SMS_PHONENO2(源表),根據源表資料更新目的表的資料。 【分析】根據經驗,更新方法一般有以下幾種: 1、直接update。 update T_SMS_PHONENO T Se

Mysql 一個表裡的資料 更新一個的資料

需求情景,一個表裡的字典欄位,另外一個表是記錄,需要拿字典裡的記錄更新記錄裡的某些欄位項,本來想寫儲存過程的,但是看到可以直接update語句就試了一下,效率挺高,直接上sql語句;200萬條記錄1分鐘搞定;   UPDATE voter_bak a, precinct b

mysql 批量修改中欄資料成不同的值 一個更新一個的方法

首先mysql更新資料的某個欄位,一般這樣寫: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以這樣用in指定要更新的記錄: UPDATE mytable SET myfield = 'value

0003-MYSQL一個查詢結果去更新一個

在MYSQL中經常遇到連線查詢,但是連線更新如何操作呢。下面給出一種標準連線更新的SQL UPDATE tpc_custody_history t INNER JOIN (SELECTid,`cust

mysql連更新一個的資料更新一個的資料)

用一個表中的欄位去更新另外一個表中的欄位,來看一個簡單的例子就會了: create table student ( student_id int not null

Oracle根據一個更新一個的幾種寫法

1. declarecursor t1 is select * from tablename;beginfor rec in t1 loopupdate tablename t set t.detail=rec.jieshao where t.objectid=rec.ob

mysql一個更新一個的方法

Solution 1:  修改1列 update student s, city c set s.city_name = c.name where s.city_code = c.code; Solution 2:  修改多個列 update  a,  b set

【轉載】SQL語句一個的數據更新一個

upd 擴展 serve new 定義函數 strong 特定 自定義函數 哪些 在Sqlserver的維護更新操作中,有時候涉及到Update操作,其中有一種情況是根據特定的條件,以一個表中的數據更新另一個表的數據,此時涉及到兩個表之間的關系以及操作,此處介紹2種更新方法

SQL兩之間:根據一個的字段更新一個的字段

表之間 update bsp cond ble n) 方式 net sdn 轉載: 原文:http://blog.csdn.net/jcx5083761/article/details/26010763 1. 寫法輕松,更新效率高:update table1 set f

MySQL中如何用一個中的更新一個中欄

1,修改1列 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多個列 update a, b set a.title=b.title, a.name=b.name wh

oracle一個中指定的資料更新到另外一張裡面

一、建立表結構 create table test1( id varchar2(10) , val varchar2(20), name varchar2(20)); create table test2( id varchar2(10), val varchar2(20) ,