第11课 使用子查询

我们考虑一个问题,列出订购物品‘RGAN01’的所有顾客的信息,那我们应该用怎样的信息检索?

  • 检索包含物品‘RGAN01’的所有订单号
  • 从这个订单号里到orders表里检索出custid
  • 再根据custid从customers的表里检索顾客的信息

上面三个步骤每个步骤都可以单独作为一个查询来执行,这就出现了子查询的定义。

不使用子查询“

select order_num
from orderitems
where prod_id = 'RGAN01';

select cust_id 
from orders
where order_num in (20007,20008)

使用子查询:

select cust_id
from orders
where order_num in (select order_num
from orderitems
where prod_id = 'RGAN01');

使用计算字段作为子查询

假设有这么一个问题,显示customers表中的每个顾客订单的总数:

  • 第一步,自然是检索出所有顾客的列表
  • 然后对于每个顾客统计其在orders表中的订单数目
select customers.cust_name, customers.cust_state,(
    select count(*)
    from orders
    where orders.cust_id = customers.cust_id
) as orders
from customers
order by cust_name;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL与MySQL简介 数据库基础 从SQL的角度来看,数据库就是一个以某种有组织的方式存储的数据集合。我们可以采...
    heming阅读 8,561评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 1 使用子查询 查询(query):任何SQL语句都是查询,但一般指SELECT语句。 SQL还允许创建子查询(s...
    hufengreborn阅读 3,180评论 0 0
  • 关系型数据库和SQL SQL语言的三个部分DML:Data Manipulation Language,数据操纵语...
    Awey阅读 5,946评论 0 13
  • 2017/3/14 RDBMS:关系型数据库管理系统 关系模型独立于语言 SQL有几种不同类型的语言:数据定义语言...
    ancherl阅读 5,579评论 0 6