我有一个包含以下数据的MySQL表:

id    userid    fieldid    data
--    ------    -------    ----
 1    186       1          London
 2    186       3          Accountant
 3    186       5          Joe Jones
 4    206       1          Paris
 5    206       5          Mark Smith
 6    210       1          Berlin
 7    210       2          0020
 8    210       3          Farmer
 9    210       4          000-000-0000
10    210       5          Bill Johnson


等等

我要结束的是另一个表,该表的数据基于用户标识格式化为行:

userid   Region    Acct    Title         Phone           Name
------   ------    ----    -----         -----           ----
  186    London    NULL    Accountant    NULL            Joe Jones
  206    Paris     NULL    NULL          NULL            Mark Smith
  210    Berlin    0020    Farmer        000-000-0000    Bill Johnson


我不需要SELECT语句...我知道如何使用GROUP_CONCAT查看数据。我说的是另一个表(也许是虚拟表?),其中的数据按行排列。

我不介意引用行名和列名的脚本,但是我不想引用特定的数据字段(即-如果row_data = London移至column1)。

我宁愿说些类似“ IF fieldid = 1然后将'data'移到new_table.column1”之类的东西,但是我丝毫不知道该怎么说。

有人可以帮忙吗?

最佳答案

尝试这个:

CREATE TABLE `temptable` AS
SELECT userid, MAX(IF(fieldid =1, DATA, NULL)) Region,
       MAX(IF(fieldid=2, DATA, NULL)) Acct, MAX(IF(fieldid =3, DATA, NULL)) Title,
       MAX(IF(fieldid=4, DATA, NULL)) Phone, MAX(IF(fieldid =5, DATA, NULL)) `Name`
FROM tablename
GROUP BY userid

关于mysql - MySQL,将数据从行移动到列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14285205/

10-12 21:34
查看更多