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) ,