2
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

4 回答 4

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否则添加。

于 2013-01-05T10:27:52.413 回答
0

你可以做这样的事情,

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

在 MySQL 中为我工作:)

于 2013-01-05T10:37:21.710 回答
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()withinSUM() 来添加 amount如果 for/by等于5 else 0将被添加。

于 2013-01-05T10:38:44.297 回答
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
于 2013-01-05T10:54:27.807 回答