如何按列分组并返回其他列的SUM?

use*_*226 1 mysql sql

我按信息ID和ANCHOR选择值:

 SELECT 
      infoid, 
      anchor, 
      value 
 FROM 
      infodata 
 WHERE 
      (infoid = 1) 
      OR (infoid = 2)
      OR (infoid = 3)
 ORDER BY 
      anchor ASC
Run Code Online (Sandbox Code Playgroud)

此查询返回一个infoid,anchors和数字列表:

infoid      anchor     value
------      -----      -----
1           10         500
2           10         600
3           10         700

1           20         800
2           20         900
3           20         1000
Run Code Online (Sandbox Code Playgroud)

我如何通过ANCHOR GROUP并返回3个infos的SUM()值?返回这样的东西:

anchor     value
-----      -----
10         500+600+700
20         800+900+1000
Run Code Online (Sandbox Code Playgroud)

fth*_*lla 6

您需要使用GROUP BY子句:

SELECT
      anchor, 
      SUM(value) 
 FROM 
      infodata 
 WHERE 
      infoid IN (1,2,3)
 GROUP BY
      anchor
 ORDER BY 
      anchor ASC
Run Code Online (Sandbox Code Playgroud)

  • 为什么不`IN IN(1,2,3)`?MySQL似乎很容易被"OR"混淆,也没有优化. (6认同)