子查询:嵌套在其它查询中的查询。
1、利用子查询进行过滤
eg1:检索包含物品RGAN01的所有订单的编号。
输入:
SELECT order_num
FROM orderitems
WHERE prod_id = 'RGAN01';
输出:
eg2:检索具有eg1列出的订单编号的所有顾客ID。
输入:
SELECT
cust_id
FROM
orders
WHERE
order_num IN
( SELECT order_num
FROM orderitems
WHERE prod_id = 'RGAN01' );
输出:
eg3:检索eg2返回的所有顾客ID的顾客信息。
输入:
SELECT
cust_name,
cust_contact
FROM
customers
WHERE
cust_id IN (
SELECT
cust_id
FROM
orders
WHERE
order_num IN (
SELECT order_num
FROM orderitems
WHERE prod_id = 'RGAN01' ));
输出:
注意:
①作为子查询的SELECT语句只能查询单个列;
②查询时由内向外查询;
③尽管嵌套的子查询数量没有限制,但不要使用太多嵌套子查询。
2、利用子查询计算字段
eg:查询每个顾客的姓名、所在州并统计每个顾客订单数量。
输入:
SELECT
cust_name,
cust_state,
(SELECT COUNT(*)
FROM orders
WHERE orders.cust_id = customers.cust_id )
AS orders
FROM
customers
ORDER BY
cust_name;
输出:
WHERE orders.cust_id = customers.cust_id
用一个句点指定来分隔表名和列名,完全限定列名。customers.cust_id表示顾客表中的cust_id列,orders.cust_id表示顾客订单表中的cust_id。
分享即学习,欢迎参观我的公众号「胡健学习笔记」,共同进步~