当前位置:  开发笔记 > 后端 > 正文

查找MySQL中两个表的行数差异

如何解决《查找MySQL中两个表的行数差异》经验,为你挑选了1个好方法。

我有两张桌子,一张是我们买的产品和数量,另一张是卖的.因此,当前库存是已购买表中所有数量列的总和减去销售表中的行数.怎么能在MySQL中表达出来.请记住,有许多不同的产品.

编辑: 为了使它更难,我有另一个要求.我有买的桌子,卖桌子,但我也有产品表.我想要一份所有产品的清单,我想知道每种产品的可用数量.目前答案的问题是他们只返回我们已售出或已购买的产品.我想要所有的产品.



1> SquareCog..:

试试这个

SELECT inv_t.product_id, inventory_total-nvl(sales_total,0)
FROM 
  (SELECT product_id, sum(quantity) as inventory_total
   FROM inventory
   GROUP BY product_id) inv_t LEFT OUTER JOIN
  (SELECT product_id, count(*) AS sales_total 
   FROM sales 
   GROUP BY product_id) sale_t
  ON (inv_t.product_id = sale_t.product_id)

这是一个比发布的其他几个更好的解决方案,它们没有考虑到某些产品在销售表中可能没有任何相应行的事实.您希望确保此类产品也显示在结果中.

NVL是一个特定于Oracle的函数,它返回第一个参数的值,除非它为null,在这种情况下它返回第二个参数的值.在所有商业DBMS中都有相同的功能 - 您可以在MySQL中使用CASE来达到同样的效果.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有