mysql 也使用分组依据选择两个表之间的差异和

ve7v8dk2  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(175)

我试图得到两个表之间的差异总和,但我一直得到错误的结果

Table1                                           Table2      

| product  | quantity |                          | product  | quantity |
| -------- | -------- |                          | -------- | -------- |
| a        | 7        |                          | a        | 2        |
| b        | 8        |                          | b        | 4        |
| c        | 9        |                          | c        | 1        |
| c        | 7        |                          | c        | 3        |
| a        | 3        |                          | a        | 2        |
| b        | 4        |                          | b        | 3        |

我尝试了此查询,但得到了错误的值:

select table1.product, sum(table1.quantity) - sum(table2.quantity) as difference
from table1
  join table2 on table1.product = table2.product
group by table1.product,table2.product;

预期成果

表一
| 积|差|
| - ------|- ------|
| 项目a|六个|
| B|五个|
| (c)秘书长的报告|十二|

kr98yfug

kr98yfug1#

UNION ALL表(其中-quantity表示表2。)GROUP BY结果。

select product, sum(quantity)
from
(
  select product,  quantity from table1
  union all
  select product, -quantity from table2
) dt
group by product

根据要求-一些评论:

作为一般建议,在连接之前使用GROUP BY(在子查询中)更安全-因为JOIN可能导致一个值有多行。
此外,要包含仅在其中一个表中找到的产品,则需要使用外连接。

相关问题