MySQL 在同一个表中加入两个查询

标签 mysql sql

mysql> select * from fact_lab;
    +---------+--------+-----+
    | product | amount | box |
    +---------+--------+-----+
    | a       |    100 |   1 |
    | b       |    200 |   1 |
    | c       |     50 |   1 |
    | a       |    200 |   2 |
    | b       |    100 |   2 |
    | c       |     50 |   2 |
    | a       |    100 |   3 |
    | b       |    200 |   3 |
    | c       |     50 |   3 |
    +---------+--------+-----+
    9 rows in set (0.00 sec)

我正在寻找一个输出,我可以在其中看到每种产品的总金额,它将显示与方框 2 的金额的比较。因此,输出应该如下所示

+---------+--------+-----+
| product | amount | inbox2 |
+---------+--------+-----+
| a       |    400 | 200 |
| b       |    500 | 100 |
| c       |    150 |  50 |
+---------+--------+-----+

如何在单个查询中获得此结果?

最佳答案

你可以通过聚合得到你想要的。 group by 是 SQL 语言的基本部分。如果你不明白,那么你应该多学习一点语言。

第二部分使用条件聚合。也就是说,case 语句是 sum() 的参数:

select fl.product, sum(amount) as amount,
       sum(case when box = 2 then amount else 0 end) as inbox2
from fact_lab fl
group by fl.product;

关于MySQL 在同一个表中加入两个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805906/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

php - 我怎样才能自己加入一个表以获得每个唯一项目的第一个或最后一个?

PHP - 创建与时间相关的时间表

C# 看不到mysql数据库

mysql - 一个外键引用不同表的两个主键?

mysql - InnoDB 是否缓存不存在的键?

sql - 即使没有返回行,如何提取汇总数据?

javascript - 使用 JSON 的 Highcharts - 图表不显示 mysql 数据

MySQL 在另一个查询中使用查询

sql - 启动蟾蜍智能感知