从数据库中检索垂直数据

时间:2014-03-07 08:32:49

标签: php mysql

这是我的数据库表。我想将水平键值检索为垂直。

    city_id  cat_id  value
     100      1       1000
     100      2       2000
     101      1        350
     101      2        500
     102      1       1000
     102      2       2000
     103      1         10
     104      2          5

输出:

city_id  catagory1    catagory2
100        1000          2000
101         350           500
102        1000          2000
103          10             0
104           0             5

2 个答案:

答案 0 :(得分:3)

您需要一个支点结果:

select
  city_id, 
  max(case cat_id when 1 then value else 0 end) as category_1,
  max(case cat_id when 2 then value else 0 end) as category_2
from
  my_table
group by
  city_id

答案 1 :(得分:1)

我应该告诉你使用GROUP_CONCAT

您的所有类别只有一列。你只需要分开它们。

SELECT city_id, GROUP_CONCAT(value SEPARATOR ', ') as categories
FROM your_table
GROUP BY city_id

这是SqlFiddle