每个SELECT字段的WHERE子句?

时间:2013-01-05 10:25:29

标签: mysql

id  by  for  amount
 1   8   5     50
 2   5   7     30
 3   6   5     80
 4   5   3     40

我该怎么做

 SELECT SUM(`amount`)[//WHERE for=5] - SUM(`amount`)[//WHERE by=5] FROM table
 i.e. 130-70  

所以我有一张桌子..
我想执行类似上面的查询..

4 个答案:

答案 0 :(得分:2)

您可以使用case声明

SELECT SUM(case when `for`=5 then `amount` else 0 end) - 
       SUM(case when `by`=5 then `amount` else 0 end)
FROM table

仅针对特定情况添加amount,否则添加0

答案 1 :(得分:0)

你可以这样做,

SELECT DISTINCT((SELECT SUM(amt) FROM tablename WHERE for = 5) - 
      (SELECT SUM(amt) FROM tablename WHERE by = 5)) 
FROM tablename;

在MySQL工作:)

答案 2 :(得分:0)

您还可以使用IF()功能:

SELECT SUM( IF(`for`=5, `amount`, 0)) - 
       SUM( IF(`by`=5,  `amount`, 0))
FROM tablename

IF()的工作原理如下:

IF(<condition>, <value if true>, <value if false>)  

我在IF() 中使用SUM()添加 amount如果 for/by等于{{1将添加其他 5

答案 3 :(得分:0)

 SELECT 
  SUM(
 CASE
    WHEN _for = 5
    THEN amount
    ELSE 0
 END
 ) - SUM(
 CASE
    WHEN _by = 5
    THEN amount
    ELSE 0
 END
 ) AS val
  FROM temp