mysql将多行转换为单行中的列

我有一个列的详细信息表:

> user_id int
>代码int
> value int

我想构建一个如下所示的汇总表:

> user_id int
> valueA int
> valueB int

在详细信息表中,valueA对应于say,代码5,valueB对应于say,代码6,所以我正在寻找类似的东西:

插入摘要(user_id,valueA,valueB)VALUES(SELECT from from details);

问题当然是我正在查看“详细信息”表中的多行以填充“摘要”表中的一行.

例如,如果我有详细的以下行:

1  5  100
1  6  200
2  5  1000
2  6  2000

我想在摘要表中得到以下结果:

1  100   200
2  1000  2000

有任何想法吗?

解决方法:

MySQL没有PIVOT / UNPIVOT语法,这使您可以使用GROUP BY和CASE表达式的组合:

INSERT INTO SUMMARY
  (user_id,valueA,valueB) 
  SELECT d.user_id,
         MAX(CASE WHEN d.code = 5 THEN d.value ELSE NULL END),
         MAX(CASE WHEN d.code = 6 THEN d.value ELSE NULL END),
    FROM DETAILS d
GROUP BY d.user_id
上一篇:排序算法之——归并排序和快速排序


下一篇:php – MYSQL – 从不同的行中获取值并将它们返回到同一行