首页 > 解决方案 > 当按 ID 分组的 colA 的总和大于按 ID 分组的表 2 中的 colB 总和时,选择表 1 的行

问题描述

我们有一张出售商品的表格,如下所示:(表 A)

ID 销售编号 物品 数量
11 5 一个 3000
12 5 2000
13 6 一个 5120
14 7 C 5000

和一张放置已发货物品的表格,如下所示:(表 B)

ID sub_id 物品 数量
1 11 一个 2850
2 11 一个 150
3 12 2100

(通过将表 B 中的 TableA.id 引用为 sub_id ,表 B 与表 A 匹配)。

我想找到每个 TableA.id 的金额总和不等于每个 TableB.sub_id 的 TableB.amount 的总和的行。

换句话说,我想知道哪些已售出的商品未按照已售出的数量发货。

我已经尝试将 tableA 左连接到 tableB 但我无法让它工作。

任何帮助,将不胜感激。谢谢!

标签: mysqlsqldatabasejoinselect

解决方案


例如:

SELECT a.*
FROM a
WHERE NOT EXISTS ( SELECT NULL
                   FROM b
                   WHERE a.id = b.sub_id
                   GROUP BY b.sub_id
                   HAVING a.amount = SUM(b.amount) )

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=1b13c67b6e622a5da72f63074d53d423


推荐阅读