这是我的查询,无法正常工作:
SELECT `id`, SUM(`column1`) as `c1`, SUM(`column2`) AS `c2`
FROM `table`
WHERE `id` IN (18, 19, 20, 21)
我想从中得到什么:我想为SUM(column1)
部分中列出的每个SUM(column2)
获得id
和WHERE
,并且要“区别” id
与之匹配。我不知道如何在一个查询中将常规列SELECT与SUM列SELECT结合-甚至可能吗?示例:
`table` structure:
id column1 column2
18 5 3
18 5 3
20 10 10
20 10 5
20 10 5
21 1 1
22 10 10
Should return:
id c1 c2
18 10 6
20 30 20
21 1 1
答案 0 :(得分:3)
您应该对行进行分组:
SELECT `id`, SUM(`column1`) as `c1`, SUM(`column2`) AS `c2`
FROM `table`
WHERE `id` IN (18, 19, 20, 21)
GROUP BY `id`
SUM,COUNT和其他数学函数与GROUP BY一起使用。
如果您需要过滤特殊字段,请使用HAVING代替WHERE: https://www.w3schools.com/sql/sql_having.asp