??xml version="1.0" encoding="utf-8" standalone="yes"?>
→?同坐在INSERT或CREATE TABLE语句中用subQuery,可以原表数据插入到目标表中?br />
→?通过在CAREATE VIEW或CREATE MATERIALIZED VIEW中用subQueryQ可以定义视图或者实例化视图所对应的SELECT语句?br />
→ ?通过在UPDATE语句中用subQuery可以修改一列或者多列数据?br />
→ ?在WHERE,HAVING,START WITH子句中可以用subQueryQ可以提供条件倹{?br />
一般来说根据返回的l果不同QsubQuery被分为单行subQueryQ多行subQuery和多列subQuery?br />
单行subQueryQ?只返回一行数据的subQuery。例如:
SELECT name,salary,deptno, FROM employee WHERE deptno =(SELECT deptno FROM employee WHERE name ='antsoul');
多行subQueryQ返回多行数据的subQuery。当在WHERE子句中用的时候,必须使用多行比较W?IN,ALL,ANY) 例如:
使用IN:
SELECT name,job,salary,deptno FROM employee WHERE job IN (SELECT distinct job FROM employee WHERE deptno = 10);
使用ALL:
SELECT name,salary,deptno FROM employee WHERE salary > ALL(SELECT salary FROM employee WHERE deptno = 30);
使用ANY:
SELECT name,salary,deptno FORM employee WHERE salary >ANY(SELECT salary FOMR employee WHERE deptno =30);
多列subQueryQ当多列subQuery在WHERE子句中用时候,必须q用多行比较W(IN,ALL,ANYQ。例?
昄与antsoul部门和岗位完全相同的职员?br />SELECT name,job,salary,deptno FROM employee WHERE (deptno,job) = (SELECT deptno,job FORM employee WHERE name ='antsoul');
相关subQuery: 需要引用主查询表列的子查询语句Q相兛_查询是通过关键字EXISTS来实现的。例?
昄工作在“ShangHai ?的所有职员?br />SELECT name,job FORM employee WHERE EXISTS(SELECT 1 FROM dept WHERE deptno = emp.deptno AND dept.loc = 'ShangHai');