如何对某些重复数据求和?



我有一个id列表,一些id可以复制。如何在一个查询中为相同的id求和值?

SELECT SUM(`power`)
FROM `stats`
WHERE `template` IN (489191, 489191, 489100)

模板489191的功率为1,489100的功率为0所以我需要得到2作为结果。

您需要与表值数据连接以获得所需的行数,例如:

select sum(stats.power)
from (
select 489191 as template union all
select 489191 union all
select 489100
) as vlist
join stats on vlist.template = stats.template

如果你使用的是MySQL 8或更高版本,你可以使用values表值构造函数代替union all:

select sum(stats.power)
from (values
row(489191),
row(489191)
row(489100)
) as vlist(template)
join stats on vlist.template = stats.template

最新更新