mysql在同一个表上获得两个sum的差异

ali*_*eon 2 mysql sql sum

我怎样才能在一个查询而不是这个查询中得到结果:

SELECT SUM(`quantity`) as type0 FROM `fruits_delivery` 
    WHERE `fid`='1001' AND `type`=0;
Run Code Online (Sandbox Code Playgroud)

result_1 = type0;

SELECT SUM(`quantity`) as type1 FROM `fruits_delivery`  
    WHERE `fid`='1001' AND `type`=1;
Run Code Online (Sandbox Code Playgroud)

result_2 = type1;

final_result = result_1 - result_2;

Shi*_*dim 9

你应该用它

SELECT sum(IF(`type`=0, `quantity`, 0))-sum(IF(`type`=1, `quantity`, 0)) 
        AS    `final_result` 
        FROM   `fruits_delivery` 
        WHERE  `fid` = '1001' 
Run Code Online (Sandbox Code Playgroud)

sqlfiddle


老答案

SELECT T1.result - T2.result AS `final_result` 
FROM   (SELECT Sum(`quantity`) AS result, 
               `fid` 
        FROM   `fruits_delivery` 
        WHERE  `fid` = '1001' 
               AND `type` = 0 
        LIMIT  1) AS T1 
       JOIN (SELECT Sum(`quantity`) AS result, 
                    `fid` 
             FROM   `fruits_delivery` 
             WHERE  `fid` = '1001' 
                    AND `type` = 1 
             LIMIT  1) AS T2 
         ON ( T1.fid = T2.fid ) 
Run Code Online (Sandbox Code Playgroud)

SQLFiddle


Joh*_*Woo 9

或者,您也可以使用它 CASE

SELECT  SUM(CASE WHEN type = 0 THEN quantity ELSE 0 END) -
        SUM(CASE WHEN type = 1 THEN quantity ELSE 0 END)
          AS final_result
FROM    fruits_delivery
WHERE   fid = '1001'
Run Code Online (Sandbox Code Playgroud)

  • +1.在接受的答案更新之前,首先回答较短的版本! (2认同)