使用空值忽略MySQL查询结果中的列

时间:2015-11-06 07:14:02

标签: mysql join subquery

我有一个MySql表,

Name    Month           Salary
=======================================
A   Salary_Month_Sept   15000
A   Salary_Month_Oct    0
B   Salary_Month_Sept   12000
B   Salary_Month_Oct    0
C   Salary_Month_Sept   13000
C   Salary_Month_Oct    0

我正在查询该表

select Name,
    max(IF(Month = 'Salary_Month_Sept', Salary, 0)) AS 'Salary_Month_Sept',
    max(IF(Month = 'Salary_Month_Oct', Salary, 0)) AS 'Salary_Month_Oct'
from myTable

将查询结果返回为

Name    Salary_Month_Sept   Salary_Month_Oct
=============================================
A       15000               0
B       12000               0
C       17000               0

如何忽略上述查询结果中只包含零或空值的列。

1 个答案:

答案 0 :(得分:0)

不要使用*。命名您想要的列。查询不是一个水晶球。它在前面不知道是否有该列的数据。要做这样的事情你需要2个查询,假设工资只是正数:

  1. 为您需要的条件选择总和(salary_sept),总和(salary_oct),....

  2. 仅为返回sum大于零的列创建第二个选择。

  3. SQL没有时间机器,抱歉。你必须自己做你的工作。