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