1

我有一个包含以下数据的 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

等等

我想要结束的是另一个表,其中数据根据用户 ID 格式化为行:

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 then move 'data' to new_table.column1”之类的话,但我一点也不知道该怎么说。

有人可以帮忙吗?

4

2 回答 2

0

这个怎么样:

create table mynewtable as
(the select statement you already know )
于 2013-01-11T19:26:27.460 回答
0

试试这个:

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
于 2013-01-11T19:32:52.457 回答