id by for amount
1 8 5 50
2 5 7 30
3 6 5 80
4 5 3 40
我怎麼可以這樣做每個SELECT字段的WHERE子句?
SELECT SUM(`amount`)[//WHERE for=5] - SUM(`amount`)[//WHERE by=5] FROM table
i.e. 130-70
,所以我有一個表..
,我想執行像上面一個查詢..
id by for amount
1 8 5 50
2 5 7 30
3 6 5 80
4 5 3 40
我怎麼可以這樣做每個SELECT字段的WHERE子句?
SELECT SUM(`amount`)[//WHERE for=5] - SUM(`amount`)[//WHERE by=5] FROM table
i.e. 130-70
,所以我有一個表..
,我想執行像上面一個查詢..
您可以使用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
而否則爲。
你可以做這樣的事情,
SELECT DISTINCT((SELECT SUM(amt) FROM tablename WHERE for = 5) -
(SELECT SUM(amt) FROM tablename WHERE by = 5))
FROM tablename;
在MySQL :)
您還可以使用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
是等於5
其他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
簡短的解釋會很好 –