php - 如何使用 MySQL 在单个查询中运行两个不同的查询?

标签 php mysql unions

我有一个包含这些列的发票表。

id total date         country
1   50   2016-01-25   USA
2   40   2016-01-24   UK
3   30   2016-01-22   France
4   40   2016-01-26   UK
5   50   2016-01-18   USA
6   60   2016-02-20   USA
7   70   2016-02-21   USA
8   55   2016-02-18   UK
9   75   2016-02-19   France

我想按月分组获取美国总金额、非美国总金额,我正在使用这些查询我只得到美国总金额

SELECT MONTH(date),YEAR(date),SUM(total) as usa_amount 
FROM Invoice 
WHERE YEAR(date) = '2016' 
  AND country='USA' 
GROUP BY MONTH(date)

我得到了这个结果

MONTH(date)  YEAR(date)   usa_amount
01            2016         100
02            2016         130

我想使用 mysql 联合或其他方式得到这个结果?

MONTH(date)  YEAR(date)   usa_amount  non_usa_amount
01            2016         100        110
02            2016         130        130

最佳答案

sum()中使用case

SELECT MONTH(date),
       SUM(case when country =  'USA' then total else 0 end) as usa_amount,
       SUM(case when country <> 'USA' then total else 0 end) as non_usa_amount 
FROM Invoice 
WHERE YEAR(date) = 2016
GROUP BY MONTH(date)

关于php - 如何使用 MySQL 在单个查询中运行两个不同的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38765875/

相关文章:

php - SilverStripe如何写入外部关系字段

mysql - 实现嵌套group_concat

c - 类型双关与联盟成员访问

c++ - 常量求值器必须拒绝 C++ 中的未定义行为( union 示例)吗?

php - 多步骤表单 JavaScript 验证以防止继续执行其他步骤

php - 印象笔记 API : example of php code to retrieve the text of a note

php - mysql 表设计,不确定最佳方法

使用 union 计算 log2

php - PHP Youtube嵌入无法滚动

php - 使用php中的文件输入在mysql中存储共享路径