利用merge优化
来源:互联网 发布:淘宝称呼买家的昵称 编辑:程序博客网 时间:2024/05/16 10:57
create table emp_test as select * from emp;create table dept_test as select * from dept;ALTER TABLE EMP_test ADD dname VARCHAR2(50) DEFAULT 'UFO';SQL> set linesize 200SQL> select empno,ename,deptno,dname from emp_test; EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 UFO 7499 ALLEN 30 UFO 7521 WARD 30 UFO 7566 JONES 20 UFO 7654 MARTIN 30 UFO 7698 BLAKE 30 UFO 7782 CLARK 10 UFO 7788 SCOTT 20 UFO 7839 KING 10 UFO 7844 TURNER 30 UFO 7876 ADAMS 20 UFO EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7900 JAMES 30 UFO 7902 FORD 20 UFO 7934 MILLER 10 UFO14 rows selected.SQL> select a.empno, a.ename, a.deptno, b.dname from emp_test a, dept_test b where a.deptno = b.deptno(+) 2 3 ; EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------- 7934 MILLER 10 ACCOUNTING 7839 KING 10 ACCOUNTING 7782 CLARK 10 ACCOUNTING 7902 FORD 20 RESEARCH 7876 ADAMS 20 RESEARCH 7788 SCOTT 20 RESEARCH 7566 JONES 20 RESEARCH 7369 SMITH 20 RESEARCH 7900 JAMES 30 SALES 7844 TURNER 30 SALES 7698 BLAKE 30 SALESUSQL> UPDATE emp_test emp SET emp.dname = (SELECT dept.dname FROM dept_test dept WHERE dept.dname IN ('SALES', 'RESEARCH') AND dept.deptno = emp.deptno);SQL> 2 3 4 5 6 14 rows updated.SQL> select empno,ename,deptno,dname from emp_test; SQL> EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 RESEARCH 7499 ALLEN 30 SALES 7521 WARD 30 SALES 7566 JONES 20 RESEARCH 7654 MARTIN 30 SALES 7698 BLAKE 30 SALES 7782 CLARK 10 7788 SCOTT 20 RESEARCH 7839 KING 10 7844 TURNER 30 SALES 7876 ADAMS 20 RESEARCH EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7900 JAMES 30 SALES 7902 FORD 20 RESEARCH 7934 MILLER 1014 rows selected.SQL> select a.empno, a.ename, a.deptno, b.dname from emp_test a, dept_test b where a.deptno = b.deptno(+) 2 3 ; EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------- 7934 MILLER 10 ACCOUNTING 7839 KING 10 ACCOUNTING 7782 CLARK 10 ACCOUNTING 7902 FORD 20 RESEARCH 7876 ADAMS 20 RESEARCH 7788 SCOTT 20 RESEARCH 7566 JONES 20 RESEARCH 7369 SMITH 20 RESEARCH 7900 JAMES 30 SALES 7844 TURNER 30 SALES 7698 BLAKE 30 SALES EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------- 7654 MARTIN 30 SALES 7521 WARD 30 SALES 7499 ALLEN 30 SALES14 rows selected.SQL> UPDATE emp_test emp SET emp.dname = (SELECT dept.dname FROM dept_test dept WHERE dept.dname IN ('SALES', 'RESEARCH') AND dept.deptno = emp.deptno) WHERE EXISTS (SELECT dept.dname FROM dept_test dept WHERE dept.dname IN ('SALES', 'RESEARCH') AND dept.deptno = emp.deptno); 2 3 4 5 6 7 8 9 11 rows updated.SQL> select empno,ename,deptno,dname from emp_test; EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 RESEARCH 7499 ALLEN 30 SALES 7521 WARD 30 SALES 7566 JONES 20 RESEARCH 7654 MARTIN 30 SALES 7698 BLAKE 30 SALES 7782 CLARK 10 UFO 7788 SCOTT 20 RESEARCH 7839 KING 10 UFO 7844 TURNER 30 SALES 7876 ADAMS 20 RESEARCH EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7900 JAMES 30 SALES 7902 FORD 20 RESEARCH 7934 MILLER 10 UFO14 rows selected. EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------- 7654 MARTIN 30 SALES 7521 WARD 30 SALES 7499 ALLEN 30 SALES14 rows selected.SQL> SELECT dept.dname FROM dept_test dept,emp_test emp WHERE dept.dname IN ('SALES', 'RESEARCH') AND dept.deptno = emp.deptno and emp.deptno=10 2 3 4 5 ;no rows selected那么deptno=10对应的记录,找不到的部门会设置为空改为merge:SQL> merge into emp_test empusing (SELECT dept.dname,dept.deptno FROM dept_test dept WHERE dept.dname IN ('SALES', 'RESEARCH')) dept on (dept.deptno = emp.deptno)WHEN MATCHED THEN update set emp.dname = dept.dname 2 3 4 5 6 7 ;11 rows merged.SQL> select empno,ename,deptno,dname from emp_test; EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7369 SMITH 20 RESEARCH 7499 ALLEN 30 SALES 7521 WARD 30 SALES 7566 JONES 20 RESEARCH 7654 MARTIN 30 SALES 7698 BLAKE 30 SALES 7782 CLARK 10 UFO 7788 SCOTT 20 RESEARCH 7839 KING 10 UFO 7844 TURNER 30 SALES 7876 ADAMS 20 RESEARCH EMPNO ENAME DEPTNO DNAME---------- ---------- ---------- -------------------------------------------------- 7900 JAMES 30 SALES 7902 FORD 20 RESEARCH 7934 MILLER 10 UFO14 rows selected.
- 利用merge优化
- 利用merge优化
- sql性能优化(利用merge)
- Android merge布局优化
- Android merge优化UI
- android布局优化-merge
- 使用merge into 优化update
- 使用merge标签优化布局
- 一次merge的优化经验
- Android、布局优化、include、merge、
- 使用merge subView优化布局
- 布局优化include与merge
- android-布局优化:merge+include
- 利用Merge代替复杂的UPDATE语句
- 利用merge sort寻找逆序对
- 利用Merge代替复杂的UPDATE语句
- 使用merge into优化update语句
- 关于update转merge的优化
- 零点起飞学Oracle
- Guarded Timed 处理超时的异常
- android Phone 距离感应器锁的实现
- 【我不聪明·在线客服】
- (转)Linux tr命令详解
- 利用merge优化
- git使用小记
- C++ - 非类型模板参数(nontype template parameters) 使用 及 代码
- 【九度】题目1061:成绩排序
- UIControl IOS控件编程—IOS开发
- git tips谨记
- dataGridView 点击 获取焦点
- Cache, cache, cache(Psycho Dad)
- 如果做不好的飞鸽传书