表的插入、更新、删除、合并操作_12_通过表关联更新表
生活随笔
收集整理的這篇文章主要介紹了
表的插入、更新、删除、合并操作_12_通过表关联更新表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ?通過表關聯更新表
需求描述
需求:更新emp表里的sal字段的值為temp表里的sal乘以1.5,這些員工號同時出現在在temp表中.
解決方法:這里通過UPDATE TableName SET ColName=..FROM TABLENAME1 A JOIN TABLENAME2 B … WHERE …的方式來更新數據.
注: 數據庫數據集SQL腳本詳見如下鏈接地址
員工表結構和數據初始化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執行結果
延展閱讀
-- 注:這里的join方式也可以寫成如下的形式: 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; -- 結果跟上述相同.?
總結
以上是生活随笔為你收集整理的表的插入、更新、删除、合并操作_12_通过表关联更新表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表的插入、更新、删除、合并操作_11_更
- 下一篇: 为什么吃柚子会拉肚子?