SQL 语句(四)

  • join

当存在多个table时,用join on 把table 联系在一起

select count(*)from newspaper;


select count(*)from online;

select count(*)
from newspaper
join online
on newspaper.id=online.id;
  • left join(一个表中的和另一表的交集为null)
  • select *
    from newspaper
    left join online
    on newspaper.id= online.id;
    
    select *
    from newspaper
    left join online
    on newspaper.id= online.id
    where online.id is null;

     

  • cross join(左右表)
  •   
    SELECT *
    FROM newspaper
    CROSS JOIN months;
    
    SELECT *
    FROM newspaper
    CROSS JOIN months
    WHERE start_month <= month 
      AND end_month >= month;
    
    SELECT month, 
      COUNT(*)
    FROM newspaper
    CROSS JOIN months
    WHERE start_month <= month 
      AND end_month >= month
    GROUP BY month;

     

  • union(上下表)
  • select *
    from newspaper
    union
    
    select *
    from online;
    
     

     

  • with (一个表的计算结果是另一个表的一项)
  • WITH previous_query AS (
       SELECT customer_id,
          COUNT(subscription_id) AS 'subscriptions'
       FROM orders
       GROUP BY customer_id
    )
    SELECT customers.customer_name, 
       previous_query.subscriptions
    FROM previous_query
    JOIN customers
      ON previous_query.customer_id = customers.customer_id;

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值