SQL 必知必会第十一课 使用子查询

SQL 必知必会第十一课 使用子查询

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');

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 count(*) as orders from orders where cust_id = 1000000001;

select cust_name, 
	   cust_state, 
       (select count(*) 
        from orders 
        where orders.cust_id = customers.cust_id)  as orders
from customers 
order by cust_name;

## 错误例子
select cust_name, 
	   cust_state, 
       (select count(*) 
        from orders 
        where cust_id = cust_id)  as orders -- 错误,因为没有限制列名
from customers 
order by cust_name;

## challenges

select cust_id from  orders where order_num in
(select order_num from orderitems where item_price >= 10 ); -- 1

select cust_id, 
       order_date
from   orders
where cust_id in 
                (select cust_id from orderitems where prod_id = 'BR01')
order by order_date; -- 2

select cust_email
from customers 
where cust_id in
(select cust_id from orders where cust_id in 
                (select cust_id from orderitems where prod_id = 'BR01')); -- 3

## 第四题
select cust_id,
		(select sum(quantity * item_price) -- sum和括号中不要有空格
		from OrderItems
		where OrderItems.order_num = orders.order_num
		group by order_num) as total_ordered-- 第二步选出价格
from orders
order by total_ordered;-- 第一步选出顾客id

## 第五题
select prod_name,
       (select sum(quantity)
        from OrderItems
        where orderitems.prod_id = products.prod_id
        group by prod_id) as quant_sold -- 找出卖掉的产品数量
from products;  -- 找出对应的产品名称

注意点

  1. 子查询只能查询单列

  2. 列名要完全限定,错误例子见代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值