考虑现在有一张city表,数据如下:
我们想以城市为列,查看每个城市的人数,即每个城市为一列,值为城市的人数.
这里需要用到mysql中的if函数:
语法: IF(expr1,expr2,expr3)
说明: 如果expr1为true,则返回expr2, 如果expr1返回false,则返回expr3.
回到问题, 以每个城市为一列来展示则必然要枚举每个城市,考虑下面的sql语句, 将表中的每一行的数据使用if函数,如果城市名匹配指定的城市,则使用该城市的人数,否则人数为0,
select
if(name='北京',people_count,0) as 北京,
if(name='上海',people_count,0) as 上海,
if(name='四川',people_count,0) as 四川
from city
执行结果:
这样,每一列中的所有人数相加,即为该城市的人数.
select
sum(if(name='北京',people_count,0)) as 北京,
sum(if(name='上海',people_count,0)) as 上海,
sum(if(name='四川',people_count,0)) as 四川
from city
加上sum函数后,即可解决最初的问题: