表1:总表;表2:出货表
表1 名字   数量       表2 名字   数量
 angel    540               sky    45
 andy     120              lily    34
    tk    80                sky    68
   sky    481             angel    520
   ice    125              sky     230
   lily   327   
求问1,计算表1每个名字的数量剩余多少,
求问2,计算表1那个名字没出货的数量

解决方案 »

  1.   

    select *,b1.数量-ifnull(b2.数量,0) from b1 left join b2 on b1.名字=b2.名字计算表1那个名字没出货的数量:详细说明
    select *,b1.数量 from b1 left join b2 on b1.名字=b2.名字 where 
    b2.名字 is null
      

  2.   

    select tb1.名字,tb1.数量-(case when tb2.数量 is null then 0 else tb2.数量 end)
    from tb1 left join tb2 on tb1.名字=tb2.名字
    select *
    from tb1
    where not exists(select 1 from tb2 where tb1.名字=tb2.名字)
      

  3.   

    求问1,计算表1每个名字的数量剩余多少,select a.名字, a.数量-IFNULL(b.数量,0);
    from 总表 a left join 出货表 b on a.名字=b.名字
      

  4.   

    求问2,计算表1那个名字没出货的数量
    select *
    from 总表 a
    where not exists (select 1 from 出货表 where 名字=a.名字)