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

How sum certain duplicated data?

我有一个id列表,有些id可以重复。 如何在一次查询中对同一 ID 的值求和?

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

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

您需要加入 table 值数据以获得所需的行数,例如:

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 table 值构造函数而不是 union all:

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