两个查询的总和

Thi*_*Guy 12 mysql sql aggregate-functions

我有两个基本查询,我需要总结:

Select hours, sum(hours) FROM table WHERE name='xxx' and Description='Worked'
Select hours2, sum(hours2) FROM table WHERE name='xxx' and Description2='Worked'
Run Code Online (Sandbox Code Playgroud)

我已经尝试了UNION,它会得到每个查询的总数,但它不会合并它们.

表格设置是:

  • ID
  • 名称
  • 小时
  • 描述
  • 小时2
  • 内容描述2

我需要将小时与描述和小时2关联到description2,这就是为什么我有两个不同的查询.我需要总计小时和小时2的总和.

a1e*_*x07 25

首先,你错过了group by,所以即使mysql没有抱怨它,你hourshours2价值观也毫无意义.其次,您UNION可以将结果放入派生子查询中,这样您就可以获得所需的总数:

SELECT SUM(hr) FROM
(
  Select sum(hours) as hr FROM table WHERE name='xxx' and Description='Worked'
  UNION ALL
  Select sum(hours2) as hr FROM table WHERE name='xxx' and Description2='Worked'
)a
Run Code Online (Sandbox Code Playgroud)

  • @This Guy:最后的`a`是一个表别名 - 大多数数据库都要求为派生表/内联视图定义一个,就像你在Alex的回答中看到的那样 (3认同)
  • 非常感谢你.我对此非常陌生,所以结构很可能已经过时了.最后的'a'是什么?我之前尝试过那个确切的查询但是用'a'. (2认同)