當(dāng)前位置:
首頁(yè) >
表的插入、更新、删除、合并操作_12_通过表关联更新表
發(fā)布時(shí)間:2024/9/27
29
豆豆
生活随笔
收集整理的這篇文章主要介紹了
表的插入、更新、删除、合并操作_12_通过表关联更新表
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ?通過(guò)表關(guān)聯(lián)更新表
需求描述
需求:更新emp表里的sal字段的值為temp表里的sal乘以1.5,這些員工號(hào)同時(shí)出現(xiàn)在在temp表中.
解決方法:這里通過(guò)UPDATE TableName SET ColName=..FROM TABLENAME1 A JOIN TABLENAME2 B … WHERE …的方式來(lái)更新數(shù)據(jù).
注: 數(shù)據(jù)庫(kù)數(shù)據(jù)集SQL腳本詳見(jiàn)如下鏈接地址
員工表結(jié)構(gòu)和數(shù)據(jù)初始化SQL腳本
SQL代碼
-- Sql server: TUNCATE TABLE temp; INSERT INTO temp(deptno,deptname,loc,empno,ename,sal) SELECT 50,'Production','Nanjing',7369,'SMITH',1000BEGIN TRAN SELECT empno,ename,sal FROM emp WHERE empno=7369; UPDATE A SET A.sal= B.sal*1.5 FROM emp A JOIN temp B ON A.empno = B.empnoSELECT empno,ename,sal FROM emp WHERE empno=7369;ROLLBACK TRAN執(zhí)行結(jié)果
延展閱讀
-- 注:這里的join方式也可以寫(xiě)成如下的形式: UPDATE A SET A.sal= B.sal*1.5 FROM emp A,temp B WHERE A.empno = B.empno-- Mysql: TRUNCATE TABLE temp; INSERT INTO temp(deptno,deptname,loc,empno,ename,sal) SELECT 50,'Production','Nanjing',7369,'SMITH',1000UPDATE emp A INNER JOIN fridge.temp B ON A.empno = B.empno SET A.sal= B.sal*1.5-- 或者: UPDATE emp,temp SET emp.sal=temp.sal*1.5 WHERE emp.empno=temp.empno;-- Oracle: TRUNCATE TABLE temp; INSERT INTO temp(deptno,deptname,loc,empno,ename,sal) SELECT 50,'Production','Nanjing',7369,'SMITH',1000 FROM DUAL;update emp a set sal=(select b.sal*1.5 from temp b where b.empno=a.empno) where exists (select 1 from temp b where b.empno=a.empno )SELECT empno,ename,sal FROM emp WHERE empno=7369; -- 結(jié)果跟上述相同.?
總結(jié)
以上是生活随笔為你收集整理的表的插入、更新、删除、合并操作_12_通过表关联更新表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 表的插入、更新、删除、合并操作_11_更
- 下一篇: 表的插入、更新、删除、合并操作_13_通