1

我在 MySQL 上有两个表(使用 phpMyAdmin),如下所示: 表 1:

Country    Total Minutes
USA        100
USA        90
Canada     60
Mexico     80
UK         90
France     70
France     10
Germany    10

在表 2 中,我需要做的是:

Region           Total Minutes
North America    USA+USA+Canada+Mexico Mins
Europe           UK+France+France+Germany Mins

有没有办法让一行成为查询的结果?

4

2 回答 2

3

您要么需要表 1 中的区域列:

SELECT region, SUM(`Total Minutes`)
FROM timespent
GROUP BY region;

或单独的region <-> country表:

SELECT region, SUM(`Total Minutes`)
FROM myregions r
INNER JOIN timespent t USING (country)
GROUP BY r.region;

区域表如下所示:

region        | country
--------------+--------
North America | USA
North America | Mexico

如果您无法更改数据库中的任何内容,请查看 Andomar 的解决方案 :)

于 2012-06-06T07:51:20.987 回答
2

您可以在子查询中将国家/地区翻译为地区。然后外部查询可以group by在区域上:

select  Region
,       sum(TotalMinutes) as TotalMinutes
from    (
        select  case country
                when 'USA' then 'North America'
                when 'France' then 'Europe'
                end as Region
        ,       TotalMinutes
        from    YourTable
        ) as SubQueryAlias
group by
        Region
于 2012-06-06T07:50:26.250 回答