我需要以下查询的帮助,它应该产生每场比赛中所有目标的总和:
SELECT SUM(stand1)
FROM wedstrijdmodule_wedstrijden
WHERE team1 = 25
UNION
SELECT SUM(stand2)
FROM wedstrijdmodule_wedstrijden
WHERE team2 = 25;
导致:
SUM(stand1)
68
77
我需要:
SUM(stand1)
145
自从我做了SQL并且搜索了大约一个小时后,已经有一段时间没有结果了。它不需要看起来很好,因为它将使用php提取。
答案 0 :(得分:2)
简单的回答,将您的查询包装在派生表中并执行另一个SUM:
select sum(sm)
from
(
SELECT SUM(stand1) as sm
FROM wedstrijdmodule_wedstrijden
WHERE team1 = 25
UNION ALL
SELECT SUM(stand2)
FROM wedstrijdmodule_wedstrijden
WHERE team2 = 25
) dt
切换到UNION ALL
,以防两个选择返回相同的数字。
或者,使用case
表达式进行条件聚合:
SELECT SUM(case when team1 = 25 then stand1 else 0 end) +
SUM(case when team2 = 25 then stand2 else 0 end)
FROM wedstrijdmodule_wedstrijden
WHERE team1 = 25 or team2 = 25