子查询
来源:互联网 发布:纳税申报软件下载 编辑:程序博客网 时间:2024/04/29 03:15
1.子查询的规则:
子查询必须位于圆括号里;
除非主查询里有多个字段让子查询进行比较,否则子查询的SELECT子句里只能有一个字段;
子查询里不能有ORDER BY,但可以使用GROUP BY子句;
返回多条记录的子查询只能与多值操作符(例如IN)配合使用;
SELECT列表里不能引用任何BLOB,ARRAY,CLOB或NCLOB类型的值;
子查询不能被直接包围在函数里;
操作符BETEWEEN不能用于子查询,但子查询内部可以使用它。
2.子查询的基本语法:
SELECT COLUMN_NAME
FROM TABLE
WHERE COLUMN_NAME = (SELECT COLUMN_NAME
FROM TABLE
WHERE CONDITIONS);
举一个现实一点例子:
SELECT E.NAME,EP.PAY_RATE
FROM EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL EP
WHERE E.EMP_ID = EP.EMP_ID
AND EP.PAY_RATE < (SELECT PAY_RATE
FROM EMPLOYEE_PAY_TBL
WHERE EMP_ID = '4436464543')
上例的意思是:返回小时工资低于雇员4436464543的所有雇员的姓名和工资,我们不关心这个特定雇员的工资。
3.子查询结合DML
1>INSERT结合子查询:
INSERT INTO RITCH_EMPLOYEES
SELECT E.EMP_ID, E.LAST_NAME,E.FIRST_NAME, EP.PAY_RATE
FROM EMPLOYEE_TBL E, EMPLOYEE_PAY_TBL EP
WHERE E.EMP_ID = EP.EMP_ID
AND EP.PAY_RATE > (SELECT PAY_RATE
FROM EMPLOYEE_PAY_TBL
WHERE EMP_ID = '220984332')
这个INSERT语句把小时工资高于雇员220984332的所有雇员的EMP_ID, LAST_NAME,FIRST_NAME, PAY_RATE插入
到一个名为RICH_EMPLOYEES的表里。
2>同理UPDATE,DELETE语句也支持子查询。
4.嵌套子查询
这里只介绍基本语法:
SELECT COLUMN_NAME {,COLUMN_NAME}
FROM TABLE1 {,TABLE2}
WHERE COLUMN_NAME OPERATOR (SELECT COLUMN_NAME
FROM TABLE
WHERE COLUMN_NAME OPERATOR
(SELECT COLUMN_NAME
FROM TABLE
WHERE COLUMN_NAME OPERATOR VALUE))
5.关联子查询
举个例子来说明:返回订购超过10件物品的顾客姓名:
SELECT C.CUST_NAME
FROM CUSTOMER_TBL C
WHERE 10 < (SELECT SUM(O.QTY)
FROM ORDERS_TBL O
WHERE O.CUST_ID = C.CUST_ID)
在举个例子,来理解上面的例子:
SELECT C.CUST_NAME, SUM(O.QTY)
FROM CUSTOMER_TBL C,
ORDERS_TBL O
WHERE C.CUST_ID = O.CUST_ID
GROUP BY C.CUST_NAME;
这个语句的意思是:显示每个顾客订购物品的数量。
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 子查询
- 线性表11|单链表小结:腾讯面试题 – 数据结构和算法16
- 在流程图中求支配点的一种快速算法
- 通过PATH-B:cloudera manager安装cloudera5.4
- 度量系统服务端文件本地异地差异备份(增量备份)脚本示例
- 第十二周项目四~~用遍历思想求解图的问题
- 子查询
- 第11周项目1-验证算法(4)哈夫曼树
- 如何利用Fragment里的 onSaveInstanceState保存数据
- selenium(webdirver)--在Firefox webdriver实例中添加Firebug and FirePath插件
- Leetcode158: Reverse Words in a String
- 线性表12|循环链表 – 数据结构和算法17
- 第12周-项目2 操作用邻接表存储的图
- 栈生长方向的定义与CPU的栈生长方向
- redis 清空缓存