update關聯更新,主查詢切記寫上條件!!!!!!!!!!!
SQL> select empno,ename,deptno,dname from emp; EMPNO ENAME DEPTNO DNAME ---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 noname 7499 ALLEN 30 noname 7521 WARD 30 noname 7566 JONES 20 noname 7654 MARTIN 30 noname 7698 BLAKE 30 noname 7782 CLARK 10 noname 7788 SCOTT 20 noname 7839 KING 10 noname 7844 TURNER 30 noname 7876 ADAMS 20 noname EMPNO ENAME DEPTNO DNAME ---------- ---------- ---------- -------------------------------------------------- 7900 JAMES 30 noname 7902 FORD 20 noname 7934 MILLER 10 noname 1111 YODA noname 已選擇15行。 需求: -----------只更新部門10、20的dname 一般人都會這麼寫: UPDATE emp SET emp.dname = (SELECT dept.dname FROM dept WHERE dept.deptno = emp.deptno AND dept.deptno IN (10, 20)); SQL> select empno,ename,deptno,dname from emp; EMPNO ENAME DEPTNO DNAME ---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 RESEARCH 7499 ALLEN 30 7521 WARD 30 7566 JONES 20 RESEARCH 7654 MARTIN 30 7698 BLAKE 30 7782 CLARK 10 ACCOUNTING 7788 SCOTT 20 RESEARCH 7839 KING 10 ACCOUNTING 7844 TURNER 30 7876 ADAMS 20 RESEARCH EMPNO ENAME DEPTNO DNAME ---------- ---------- ---------- -------------------------------------------------- 7900 JAMES 30 7902 FORD 20 RESEARCH 7934 MILLER 10 ACCOUNTING 1111 YODA 已選擇15行。 我只更新10和20為掃描30被更新成空值了呢? Plan hash value: 2456638059 ----------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------------- | 0 | UPDATE STATEMENT | | 15 | 450 | 2 (0)| 00:00:01 | | 1 | UPDATE | EMP | | | | | | 2 | TABLE ACCESS FULL | EMP | 15 | 450 | 2 (0)| 00:00:01 | |* 3 | FILTER | | | | | | | 4 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 13 | 1 (0)| 00:00:01 | |* 5 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 | ----------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter(:B1=10 OR :B2=20) 5 - access("DEPT"."DEPTNO"=:B1) filter("DEPT"."DEPTNO"=10 OR "DEPT"."DEPTNO"=20) 當主查詢給子查詢傳值的時候:B1 相當於子查詢為: SELECT dept.dname FROM dept WHERE dept.deptno = :B1; AND dept.deptno IN (10, 20) 當傳入30部門時,返回為空,所以30部分的資料都被跟新為空了 正確寫法: UPDATE emp SET emp.dname = (SELECT dept.dname FROM dept WHERE dept.deptno = emp.deptno AND dept.deptno IN (10, 20)) where emp.deptno in (10, 20)
相關推薦
update關聯更新,主查詢切記寫上條件!!!!!!!!!!!
SQL> select empno,ename,deptno,dname from emp; EMPNO ENAME DEPTNO DNAME ---------- ---------- ---------- ---------------------
外鍵關聯非主鍵id時-hbm.xml配置,及其分頁查詢DaoImpl
foreign opp style area ringbuf ber getc ram n-k 表關聯時,外鍵關聯非主鍵id時-hbm.xml配置: (由於hibernate默認為關聯主鍵查詢,故需要配置相關hql語句的屬性) <many-to-one name=
mysql資料庫根據主鍵關聯更新指定欄位值
需求: 現有兩個表分別為 person_info2 和 person_info ,person_info2 表資料不變,當person_info2表中的主鍵和person_info2 表的主鍵相同時,則更新person_info2 表中其他欄位更新為per
sqlce不支援關聯更新(update from)的替代方案
public class SqlCeBatchUpated { public string ConnStr { set; get; } public delegate void MyUpdate(SqlCeCommand cmd, Sql
UPDATE多表關聯更新時為什麼會慢
構建環境如下: Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as [email protected]:1521/orcl SQL> C
TFS支援移動裝置,微軟已經走出了第一步(手機上更新、查詢工作項)
TFS支援移動裝置,微軟已經走出了第一步(手機上更新、查詢工作項) TFS支援移動裝置,微軟已經走出了第一步! 從現在開始,你可以在手機瀏覽器上開啟自己的VSTS團隊專案,會看大手機版的工作項介面,你可以在手機裝置上更新、查詢工作項。 這是原生自帶的,這些移動功能馬上就會應用到後續
Access update語句 提示 "操作必須使用一個可更新的查詢"
當在access中使用update語句時如果遇到"操作必須使用一個可更新的查詢"提示資訊,通常時許可權設定問題但是有一種情況非常特殊,舉例如下:表A(col1, col2) 表B(col1, col2) 如何實現下述SQL的功能? update A, (select c
oracle update select (更新查詢的sql)
(1).update tableName set (a,b,c)=(select a,b,c from ida where ida.id=tableName.id); (2).update tableName t1 set
Github上 fork了別人的程式碼 本地更新主分支程式碼
在GitHub上我們會去fork別人的一個專案,這就在自己的Github上生成了一個與原作者專案互不影響的副本,自己可以將自己Github上的這個專案再clone到本地進行修改,修改後再push,只有自己Github上的專案會發生改變,而原作者專案並不會受影響,
Update關聯查詢不走索引,效率低下
優化一個sql,就是有A,B兩個表,要利用b表的欄位更新a表對應的欄位。形如Sql程式碼 update A set A.a=(select B.b from B where A.id=B.id); 原SQLupdatepntmall_rptpoint_detail
update left join 多表關聯更新,
UPDATE table_1 t1 left join table_2 t2 on t2.id = t1.tid SET t1.username = t2.uname where t1.id>5
mysql update in 巢狀子查詢更新
更新該句 update punchcard_tbl set percheck=3 where id in (select id punchcard where id=1) 在 MySQL 命令列工具中傳回:ERROR 1093 (HY000): You can't spec
SQL update多表關聯更新
UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE exists ( SELECT 1 FROM 表1 WHERE 表1.A = 表2.A) ; update TA a set(name, re
Oracle多表關聯更新(update多表關聯)
.Oracle沒有update from語法,可以通過兩種實現方式: 1、利用子查詢: update A SET 欄位1=(select 欄位表示式 from B WHERE ...),
SQL update 多表關聯更新
實現多表更新,尤其是A表和A的子表B表資料更新,下面是例子 有A、B張表,其記錄如下: A表 c1 c2 -------------- 1 a1 2 a2 3
UPDATE與多表關聯更新
SQL環境:SQL Server 2008業務需求:將查詢的記錄集合更新部分欄位,涉及到多張表1.SQL查詢獲得的記錄集合:SELECT u.USER_NAME_,g.desc_, u.email_,
mysql-不恰當的update語句使用主鍵和索引導致mysql死鎖
行修改 sql錯誤 狀態 還要 錯誤日誌 示意圖 http 概率 最小 背景知識:MySQL有三種鎖的級別:頁級、表級、行級。 MyISAM和MEMORY存儲引擎采用的是表級鎖(table-level locking);BDB存儲引擎采用的是頁面鎖(page-level l
關於Rack()自增長的一則雙表關聯更新
oracle 排序 rank A表(tb_abc):AB1aa02002bb03003cc05004dd18005ee22006ff3300B表(tb_abcc):AB1aa(0201)2aa(0202)3bb(0301)4bb(0302)5bb(0303)6cc(0501)括號裏是預期值規則:
為我的外婆和奶奶寫上我的挽歌
最好的 大自然 暴露 日子 世界 人類 一個地方 生存 說過 我在我出生的時候我的外公就不在了,聽人說是文革時候被弄死的。是你獨自把包括我媽在內的4個女兒拉扯大的。 我小時候我的父親參軍還在部隊沒有回來,母親在另一個地方工作,是你把我拉扯到了5歲直
sqlserver關聯更新問題
rom date 所有 問題 目的 from myba lec cor 大家都知道update更新語句:update 表名 set 字段=值。似乎很簡單 但是今天我遇到這樣一個問題:我需要更新一張叫PO_SPECIAL_TASK_LINE表的score字段,這個分數通過另外