MySQL SELECT IF区分SUM

时间:2016-10-26 11:26:32

标签: mysql if-statement select

我的数据库结构如下所示:

id    |    valuefor   |    quantity
1          alpha           500
2          alpha           100
3          beta            200

我正在使用以下mysql命令

SELECT IF(valuefor=alpha, SUM(quantity),0) as alpha
     , IF(valuefor=beta, SUM(quantity),0) as beta 
  FROM mytable

当前输出:

alpha   |   beta
800         0

上面显而易见的问题是,由于我使用了SUM,所以它都是SUMS。我怎样才能克服这种困境?我想分别获得alpha和beta的数量。

其次,我很困惑为什么beta在输出中没有值= 800,为什么会说0。这只是为了让我更好地理解这个问题。

我希望结果如下:

alpha    |    beta
600           200

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT SUM(CASE WHEN valuefor=alpha THEN quantity ELSE 0 END) AS alpha,
       SUM(CASE WHEN valuefor=beta THEN quantity ELSE 0 END) AS beta
FROM mytable

答案 1 :(得分:1)

您可以像这样使用case语句:

select
  sum(case valuefor when 'alpha' then quantity else 0 end) as alpha,
  sum(case valuefor when 'beta' then quantity else 0 end) as beta
from test;

示例:

http://sqlfiddle.com/#!9/f07bbf

create table test (
  id int,
  valuefor varchar(20),
  quantity int
);

insert into test values
(1, 'alpha', 500),
(2, 'alpha', 100),
(3, 'beta', 200);

<强>结果

| alpha | beta |
|-------|------|
|   600 |  200 |