zoukankan      html  css  js  c++  java
  • 网上看到一道sql查询题所做的总结

    求表AAA中剩余的库存量。

    Sql语句(1)

    SELECT mc,SUM(s1)as 剩余数量 FROM  
       (
       SELECT 
           [mc],([s1]) as s1
          FROM AAA
          UNION all
        SELECT 
            [mc],(-[s1]) as s1
          FROM BBB) List 
       GROUP BY mc  

    把两个表联合起来组成一个结果,把出库的数量转化为负的,然后再求和。

    注意,此处必须用union all ,不能用union,union和union all 的区别是union会把联合起来的重复记录删除掉,所以不能用union,两个表的结构必须相同。

    扩充:except 也是连接两个sql语句,就是获取AAA表中的在BBB表中没有的记录行,两个表的结构必须相同,except all是不消除重复的,但是在有的sql版本中不能用。

    intersect恰好同except 相反,他是获取两个sql中AAA表中有,BBB表中也有的记录行,两个表的结构必须相同,intersect all是不消除重复的,但是在有的sql版本中不能用。

    sql语句(2)

    select mc ,s1-(select sum(s1) from bbb where mc=aaa.mc group by mc) from aaa
  • 相关阅读:
    easyui中的combobox小知识点~~
    nodejs+express+mysql 增删改查
    建库和表的脚本.sql
    linux服务器最大连接数
    java高级主题
    java线程池ThreadPoolExecutor
    关于Future
    git rebase
    bash shell for循环
    accept()出的socket不会使用新的端口号
  • 原文地址:https://www.cnblogs.com/heluo/p/2663594.html
Copyright © 2011-2022 走看看